OpenGL ES 2.0 每个顶点使用多个法线向量
Posted
技术标签:
【中文标题】OpenGL ES 2.0 每个顶点使用多个法线向量【英文标题】:OpenGL ES 2.0 using multiple normal vectors per vertex 【发布时间】:2014-02-26 20:17:49 【问题描述】:显然是 OpenGL 的新手 我想知道是否可以使用每个顶点具有多个法线向量的 VBO。我当前的顶点数组顺序如下:
j = [x,y,z,r,g,b,a,n1x,n1y,n1z,n2x,n2y,n2z,n3x,n3y,n3z....]
此方法要求着色器区分使用哪个法线向量,这是导致问题的原因。任何建议都会很棒。
还在寻找有关使用多个 IBO 和 VBO 的教程,大多数教程似乎只使用一个。
【问题讨论】:
它在哪里造成了什么问题?你能补充一下这些细节吗? 欢迎来到 SO!如果您可以更具体地了解您遇到的问题类型,我们会更容易回答您的问题。你在每个顶点使用多个法线做什么,在着色器中选择它们有什么问题? 【参考方案1】:您可以通过向 glVertexAttribPointer() 提供不同的步幅来使其交错工作,例如,它是如何处理顶点和纹理坐标的不同数据量的。或者,您可以对顶点、法线和纹理坐标使用单独的 VBO,而不是将它们交错。
您可以在 PowerVR SDK 中找到使用 VBO 的更好示例,该 SDK 可从以下网址免费下载:
http://www.imgtec.com/powervr/insider/sdkdownloads/
【讨论】:
感谢您的回复,我发现最简单的方法是只要顶点的法线发生变化(也就是 3d 对象的角)就重复该顶点。它使 GLSL 逻辑更容易。我还将研究 PowerVR SDK。以上是关于OpenGL ES 2.0 每个顶点使用多个法线向量的主要内容,如果未能解决你的问题,请参考以下文章