如何在OpenGL中的对象上放置纹理?

时间:2013-07-24 12:08:32

标签: java opengl-es-2.0 textures

我使用二十面体的基础制作了球体,所以我将许多三角形组合成一个球体。有许多顶点和索引,但使用此代码(java)轻松绘制所有内容:

gl.glFrontFace(GL10.GL_CW); 
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertBuff);
gl.glDrawElements(GL10.GL_TRIANGLES, size, GL10.GL_UNSIGNED_SHORT, shortBuff);

其中shortBuff表示索引,vertBuff表示顶点。有没有办法将图像包裹在对象的正面以便放置纹理?

1 个答案:

答案 0 :(得分:1)

基本上你需要顶点的纹理坐标,然后将图像加载到纹理中并激活该纹理阶段。

Here's an (somewhat old but still valid) article on OpenGL texture mapping.

另一个来源可能是offical OpenGL FAQ

还有一些选项让OpenGL为您生成纹理坐标,但它们可能无法生成您想要的结果。

最后一种更现代的方法是使用着色器进行纹理贴图。但是,这可能仍然高于你的水平,我也不确定OpenGL ES的功能(我正在使用完整的OpenGL)。

修改

这是a tutorial on OpenGL tex coord generation

请注意,您仍应深入研究其他纹理坐标生成方法,例如:在其他地方生成它们(如建模软件)并将它们与顶点坐标一起加载 - 或者根据顶点坐标或其他数据计算它们。

纹理坐标生成可能是一个开始,但出于学习目的,我建议学习如何手动完成。这样你就可以更好地理解纹理坐标和纹理映射是如何工作的。