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; }
{
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; }
是不是应该用边缘截取方式啊你图片的大小是2的指数次方?
为什么要把这句隐掉啊
//GL.glTexEnvi(GL.GL_TEXTURE_ENV,GL.GL_TEXTURE_ENV_MODE,(int)GL.GL_DECAL);