写了个小程序,目的是产生两幅图片的变换效果
首先画了44*44的方格,然后对各个方格贴图,每个方格贴材质的一部分
for i:= 0 to 43 do
  for j:= 0 to 43 do
  .............这样写是没问题,但如果改写成
for i:= 0 to line do
  for j:= 0 to col do
  .............  则显示的效果变成了就像黑板刷擦黑板一样,一列一列的显示出来,实在不懂为什么
  

解决方案 »

  1.   

    其实就是照这个教程改的,只是把例子中的44改成了line和col两个变量glBegin(GL_QUADS);                                          // 四边形绘制开始for( x = 0; x < 44; x++ )                                         // 沿 X 平面 0-44 循环(45点){for( y = 0; y < 44; y++ )                                         // 沿 Y 平面 0-44 循环(45点){float_x = float(x)/44.0f;                                         // 生成X浮点值float_y = float(y)/44.0f;                                         //生成Y浮点值float_xb = float(x+1)/44.0f;                                    //X浮点值+0.0227ffloat_yb = float(y+1)/44.0f;                                   //Y浮点值+0.0227fglTexCoord2f( float_x, float_y);                            // 第一个纹理坐标 (左下角)glVertex3f( points[x][y][0], points[x][y][1], points[x][y][2] );glTexCoord2f( float_x, float_yb );                         // 第二个纹理坐标 (左上角)glVertex3f( points[x][y+1][0], points[x][y+1][1], points[x][y+1][2] )glTexCoord2f( float_xb, float_yb );                       //第三个纹理坐标 (右上角)glVertex3f( points[x+1][y+1][0], points[x+1][y+1][1], points[x+1][y+1glTexCoord2f( float_xb, float_y ); // 第四个纹理坐标 (右下角)glVertex3f( points[x+1][y][0], points[x+1][y][1], points[x+1][y][2] )}}glEnd(); // 四边形绘制结束
      

  2.   

    OpenGL的纹理坐标顺序是左下角、右下角、右上角、左上角。
      

  3.   

    嗯,
    OpenGL的坐标顺序和DirectX是反的是从右下向左上来的