这里是输出: http: //i43.tinypic.com/9a5zyx.png 如果事情按照我想要的方式工作,左边正方形的颜色将匹配右边正方形的颜色。感谢有关该主题的任何帮助
#include <gl/glfw.h> const char* 标题="测试"; 胶粘剂img; 无符号整数 w=64,h=64; 整数屏幕宽度,屏幕高度; 无效启用2d() { glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glViewport(0,0,screenwidth,screenheight); glOrtho(0,screenwidth,screenheight,0,-1,1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glPushAttrib(GL_DEPTH_BUFFER_BIT|GL_LIGHTING_BIT); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); glClearColor(0.0f, 0.0f, 0.0f, 0.5f); } 无效的drawmytex() { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,img); glBegin(GL_QUADS); glTexCoord2i(0,0); glVertex2i(0,0); glTexCoord2i(1,0); glVertex2i(w,0); glTexCoord2i(1,1); glVertex2i(w,h); glTexCoord2i(0,1); glVertex2i(0,h); glEnd(); glDisable(GL_TEXTURE_2D); } 无效drawquad(int x,int y) { glBegin(GL_QUADS); glColor3f(0.0f,1.0f,0.0f); glVertex2i(x,y); glColor3f(1.0f,0.0f,1.0f); glVertex2i(x+w,y); glColor3f(0.0f,1.0f,1.0f); glVertex2i(x+w,y+h); glColor3f(0.0f,0.0f,1.0f); glVertex2i(x,y+h); glEnd(); } 无效的 texcopy() { 如果(!glIsTexture(img)) glDeleteTextures(1,&img); glGenTextures(1,&img); glBindTexture(GL_TEXTURE_2D,img); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,w,h,0,GL_RGBA,GL_UNSIGNED_BYTE,0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,w,h,0,-1,1); glViewport(0,0,w,h); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 绘制四边形(0,0); glBindTexture(GL_TEXTURE_2D,img); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); //glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,0,0,w,h,0); glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,screenwidth,screenheight,0,-1,1); glViewport(0,0,screenwidth,screenheight); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } 主函数() { 整数运行; glfwInit(); 运行=glfwOpenWindow(640,480,0,0,0,0,0,0,GLFW_WINDOW); 如果(!运行) { glfw终止(); 返回0; } glfwSetWindowTitle(title); glfwEnable(GLFW_STICKY_KEYS); glfwGetWindowSize(&screenwidth,&screenheight); enable2d(); 纺织品(); 做 { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); drawquad(64,0); drawmytex(); glfwSwapBuffers(); 运行=!glfwGetKey(GLFW_KEY_ESC)&&glfwGetWindowParam(GLFW_OPENED); GLenum 错误=glGetError(); 如果(错误!=GL_NO_ERROR)运行=错误; glfwSleep(.017); } 而(运行==1); glDeleteTextures(1,&img); glfw终止(); 返回运行; }