0

我用二十面体的底制作了球体,所以我将许多三角形组合成一个球体。有许多顶点和索引,但是使用以下代码(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 表示顶点。有没有办法将图像包裹在物体的正面以放置纹理?

4

1 回答 1

1

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

这是一篇关于 OpenGL 纹理映射的(有些旧但仍然有效的)文章。

另一个来源可能是官方的 OpenGL FAQ

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

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

编辑

这是关于 OpenGL tex coord generation 的教程

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

纹理坐标生成可能是一个开始,但出于学习目的,我建议也学习如何手动进行。这样,您将更好地了解纹理坐标和纹理映射的工作原理。

于 2013-07-24T12:22:57.333 回答