ここに出力があります: http://i43.tinypic.com/9a5zyx.png 物事が私が望むように機能していれば、左の四角の色は右の四角の色と一致します。この件に関して何か助けてくれてありがとう
#include <gl/glfw.h> const char* title="テスト"; Gluint img; unsigned int w=64,h=64; int 画面幅、画面高さ; ボイド enable2d() { glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glViewport(0,0,スクリーン幅,スクリーン高さ); glOrtho(0,スクリーン幅,スクリーン高さ,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); } void 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); } void 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(); } void texcopy() { if (!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); drawquad(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,スクリーン幅,スクリーン高さ,0,-1,1); glViewport(0,0,スクリーン幅,スクリーン高さ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main() { int ランニング; glfwInit(); running=glfwOpenWindow(640,480,0,0,0,0,0,0,GLFW_WINDOW); if (!running) { glfwTerminate(); 0 を返します。 } glfwSetWindowTitle(タイトル); glfwEnable(GLFW_STICKY_KEYS); glfwGetWindowSize(&screenwidth,&screenheight); enable2d(); texcopy(); 行う { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); drawquad(64,0); drawmytex(); glfwSwapBuffers(); running=!glfwGetKey(GLFW_KEY_ESC)&&glfwGetWindowParam(GLFW_OPENED); GLenum エラー = glGetError(); if (error!=GL_NO_ERROR)running=エラー; glfwSleep(.017); } ながら (実行中 == 1); glDeleteTextures(1,&img); glfwTerminate(); ランニングを返します。 }