OpenGL中三角形法线不显示问题求助
使用法线数组渲染OpenGL法线数据集的实现
最近在搞OpenGL法线渲染的相关内容,整理了一套用法线数组渲染法线数据集的具体实现代码,同时也把我测试时填充法线数组的方式分享出来——哪怕用这种简化的填充逻辑,之前遇到的渲染错误依然会复现:
核心渲染流程代码
首先要启用法线数组并指定数据源:
glEnableClientState(GL_NORMAL_ARRAY); glNormalPointer(GL_FLOAT, 0, nArray);
接下来是顶点数组的渲染逻辑,这部分和法线数组配合完成绘制:
glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, vArray); glDrawElements(GL_TRIANGLES, iSize, GL_UNSIGNED_INT, iArray); // 记得用完后禁用对应的客户端状态 glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY);
法线数组的测试填充方式
为了方便快速验证问题,我用了非常简单的方式填充nArray——比如给所有顶点设置统一的Y轴正方向法线:
// 假设vertexCount是顶点总数,每个法线由3个float分量组成 for (int i = 0; i < vertexCount * 3; i += 3) { nArray[i] = 0.0f; // X分量 nArray[i+1] = 1.0f; // Y分量 nArray[i+2] = 0.0f; // Z分量 }
有意思的是,就算用这种毫无复杂计算的填充方式,我之前碰到的那个渲染错误还是会出现。
内容的提问来源于stack exchange,提问作者tester
相关产品推荐
相关产品推荐

