我正在使用普通数组来呈现普通数据集,如下所示:
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(正确计算法线时仍然会出现错误):
for(int i = 0; i < nSize * 3; ++i){
nArray[i] = randomNumber();
}
在哪里randomNumber()
返回一个介于 0 和 1 之间的随机浮点数。
我希望它nArray
应该填充 0 到 1 之间的随机浮点数,并且这些应该完全随机地显示在我生成的表面上。
当我渲染输出时,“法线”显示如下。我不在乎它没有计算出正确的法线,但似乎两个并排三角形的法线是相同的。
我使用的阴影方法是:glShadeModel(GL_FLAT);
我希望每个单独的三角形都有完全不同的灰度值,但事实并非如此。感谢您对我出错的地方的任何帮助。