我尝试在OpenGL中绘制带有纹理的矩形。在将纹理写入矩形之前,我先绘制了一种具有适当颜色的OpenGL图元。然后,我使用下面给出的代码将纹理写入矩形,其中可变缓冲区包含800x600像素的RGB数据。但是执行一段代码会导致矩形内的什么颜色仍然保持原语中的颜色。 我在做什么错了?
从19.11.19起更新代码
一段代码:
I/flutter ( 4227): WebSocket connection to ws://###.##:8080/socket?vsn=2.0.0 failed!: WebSocketException: Connection to 'http://###.##:8080/socket?vsn=2.0.0#' was not upgraded to websocket
从08.11.19开始更新代码(可以正常工作,但如果glTexSubImage2D使用错误1281,则无效)
//glDisable(GL_COLOR_MATERIAL);
glScalef(1,1,1);
glPixelstorei(GL_UNPACK_ALIGnmENT,1);
glGenTextures (1,@texID);
glBindTexture (GL_TEXTURE_2D,texID);
if schglobal=1 then
glTexImage2D(GL_TEXTURE_2D,GL_RGB,800,600,GL_BGR,GL_UNSIGNED_BYTE,buffer)
else
begin
glTexImage2D(GL_TEXTURE_2D,buffer)
end;
glcolor3i(255,255,255);
//glcolor3i(0,0);
//glcolor3i(0,0);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
//glTexEnvf(GL_TEXTURE_ENV,GL_COMBINE_RGB,GL_MODULATE);
glBindTexture (GL_TEXTURE_2D,texID);
glEnable(GL_TEXTURE_2D);
glBegin (GL_QUADS);
glTexCoord2f (0,0);
glVertex3f (vertexes[4,1],vertexes[4,2],3]);
glTexCoord2f (1,0);
glVertex3f (vertexes[2,vertexes[2,1);
glVertex3f (vertexes[1,vertexes[1,3]);
glTexCoord2f (0,1);
glVertex3f (vertexes[3,vertexes[3,3]);
glEnd;
ans:=glGetError;
//glFlush();
//glBindTexture (GL_TEXTURE_2D,0);
glDisable(GL_TEXTURE_2D);