我正在使用普通的数组来呈现以下普通数据集:
为了举例说明,我将填充nArray如下(当法线正确计算时仍会出现错误):
我正在使用普通的数组来呈现以下普通数据集:
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);
我期望每个单独的三角形都有完全不同的灰度值,但情况并非如此。如果您能指出我做错了什么,我将不胜感激。