protected override void InitGLContext()
        {
            base.InitGLContext();
            GL.glShadeModel(GL.GL_SMOOTH);            // Enable Smooth Shading
            GL.glClearColor(0.7f, 0.7f, 0.9f, 0.5f);             // Black Background
            GL.glClearDepth(1.0f);                                    //  Depth Buffer Setup
            GL.glEnable(GL.GL_DEPTH_TEST);            // Enables Depth Testing
            GL.glDepthFunc(GL.GL_LEQUAL);              //  The Type Of Depth Testing To Do
            GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
            LoadTextures();
        }        public override void glDraw()
        {
            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // 清理视窗以及深度缓存
            GL.glLoadIdentity(); // 重置当前模型视图矩阵
            GL.glTranslatef(-0.5f, -0.5f, -10);        
            GL.glRotatef(xRot, 1.0f, 0.0f, 0.0f);
            GL.glRotatef(yRot, 0.0f, 0.0f, 1.0f);
            GL.glRotatef(zRot, 0.0f, 1.0f, 0.0f);
            GL.glColor3f(1.0f, 1.0f, 1.0f);
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glBindTexture(GL.GL_TEXTURE_2D, textures[0]);
            GL.glBegin(GL.GL_QUADS);//绘制四边形
            GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-2.0f, -1.0f, 0.0f);
            GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-2.0f, 1.0f, 0.0f);
            GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(0.0f, 1.0f, 0.0f);
            GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(0.0f, -1.0f, 0.0f);
            GL.glEnd();
            GL.glDisable(GL.GL_BLEND);
            GL.glDisable(GL.GL_TEXTURE_2D);
       }        private bool LoadTextures()
        {
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glGenTextures(2, textures);                        //生成纹理坐标
            GL.glBindTexture(GL.GL_TEXTURE_2D, textures[0]);                  Bitmap img=new Bitmap ("moon1.jpg");
            Rectangle rect= new Rectangle (0,0,img.Width ,img .Height );
            System.Drawing .Imaging .BitmapData bitmapdata=img .LockBits (rect, System.Drawing .Imaging .ImageLockMode .ReadOnly,
                System.Drawing .Imaging .PixelFormat.Format24bppRgb );
           
GL.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MIN_FILTER,GL.GL_LINEAR);
GL.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MAG_FILTER,GL.GL_LINEAR);
GL.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_REPEAT);
GL.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_T,GL.GL_REPEAT);
//GL.glTexEnvi(GL.GL_TEXTURE_ENV,GL.GL_TEXTURE_ENV_MODE,(int)GL.GL_DECAL);
GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_RGB8, 
img.Width, img.Height, 
0, GL.GL_BGRA_EXT, GL.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
 
            img.UnlockBits(bitmapdata);
            return true;        }

解决方案 »

  1.   

    Meybe the black border comes from your picture itself
      

  2.   

    GL.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_T,GL.GL_REPEAT);
    是不是应该用边缘截取方式啊你图片的大小是2的指数次方?
      

  3.   


    为什么要把这句隐掉啊
    //GL.glTexEnvi(GL.GL_TEXTURE_ENV,GL.GL_TEXTURE_ENV_MODE,(int)GL.GL_DECAL);