OpenGL中的纹理错误

我尝试在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);
ys121212 回答:OpenGL中的纹理错误

我用glTexSubImage2d解决了我的问题。我将纹理生成转移到了表单创建过程中,并将纹理删除到了表单关闭过程中。

本文链接:https://www.f2er.com/3161451.html

大家都在问