【问题标题】:Texture Mapping a 3D object with a 2D texture in openGL在 openGL 中使用 2D 纹理映射 3D 对象
【发布时间】:2011-10-17 03:25:47
【问题描述】:

我有一个由三角形组成的立方体,所以有 8 个顶点和相应的切入点来创建三角形。我无法为这个立方体创建纹理坐标。我尝试使用以下值:

    float amt = 1.0f;
m_texBuffer.push_back(Texel(0.0f, 0.0f));
m_texBuffer.push_back(Texel(amt, 0.0f));
m_texBuffer.push_back(Texel(amt, amt));
m_texBuffer.push_back(Texel(0.0f, amt));

m_texBuffer.push_back(Texel(0.0f, 0.0f));
m_texBuffer.push_back(Texel(amt, 0.0f));
m_texBuffer.push_back(Texel(amt, amt));
m_texBuffer.push_back(Texel(0.0f, amt));

amt 的值变化时,我得到了奇怪的视觉结果。我知道,由于图像可能小于实际对象,因此没有一对一的对应关系,因此我尝试将 amt 设为一个较小的值,但仍然不行。

【问题讨论】:

  • 在哪里?我没有看到复选框,也没有看到答案
  • 我的意思是你的其他问题。我只是注意到您(在我发布该消息时)没有接受任何答案,而是让您知道该功能。
  • @NicolBolas,我认为他需要 15 个声望。所以在他明白之前,他不能接受答案
  • @NicolBolas,啊!我记得一个人说我想接受,但我不能接受,因为它需要 15 个。也许他误点击了赞成票。

标签: opengl 3d texture-mapping


【解决方案1】:

对于每个坐标的采样范围为 0 到 1 的常规纹理,与采样分辨率无关。

不幸的是,您的代码完全没有意义,它可能是任何东西。我们真的需要看到更多,尤其是实际的 OpenGL 调用。

因评论而编辑

加载图像数据必须告诉 OpenGL 缓冲区中数据的布局。基本信息是

(glTexImage 的参数)

  • 组件数量
  • 组件排列
  • 每个组件的大小

(glPixelStore 的参数)

  • 对齐(0 表示紧密打包,否则对齐到 1、2 或 4 个字节)
  • 像素和行运行长度(通常为 0)

请参阅glTexImageglPixelStore 的文档,并根据您的图像数据进行适当的设置。

【讨论】:

  • 我实际上在物体上获得了彩虹迷幻效果。它几乎就像电视屏幕上的彩色雪花。我不知道为什么会这样。
  • @Katianie:那么你没有正确加载你的纹理。完全不同的问题。请在以后的问题中添加屏幕截图。请参阅我的答案的编辑。
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 2018-07-13
  • 2013-06-29
  • 1970-01-01
  • 2011-05-04
  • 2011-03-16
  • 1970-01-01
  • 2012-07-28
相关资源
最近更新 更多