2013-07-24 17 views
0

我制作了使用二十面体基座的球体,所以我有许多三角形组合成一个球体。有许多顶点和索引,但一切都被这个代码(JAVA)制定了轻松:如何在OpenGL中的对象上放置纹理?

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

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

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

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

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

+0

是的,我不太熟悉着色器,我甚至还在为OpenGL的基础知识而苦苦挣扎。你可能会告诉我如何让OpenGL为我生成关于我的顶点的纹理坐标? – Tommz