gpt4 book ai didi

c++ - 为什么 glCopyTexSubImage2D 不能正确复制我的正方形?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:14:00 25 4
gpt4 key购买 nike

这是输出:http://i43.tinypic.com/9a5zyx.png如果事情按照我想要的方式进行,左方 block 中的颜色将与右方 block 中的颜色相匹配。感谢有关该主题的任何帮助

#include <gl/glfw.h>const char* title="test";GLuint img;unsigned int w=64,h=64;int screenwidth,screenheight;void enable2d(){    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);}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,screenwidth,screenheight,0,-1,1);    glViewport(0,0,screenwidth,screenheight);    glMatrixMode(GL_MODELVIEW);    glLoadIdentity();}int main(){    int running;    glfwInit();    running=glfwOpenWindow(640,480,0,0,0,0,0,0,GLFW_WINDOW);    if (!running)    {        glfwTerminate();        return 0;    }    glfwSetWindowTitle(title);    glfwEnable(GLFW_STICKY_KEYS);    glfwGetWindowSize(&screenwidth,&screenheight);    enable2d();    texcopy();    do    {        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);        glLoadIdentity();        drawquad(64,0);        drawmytex();        glfwSwapBuffers();        running=!glfwGetKey(GLFW_KEY_ESC)&&glfwGetWindowParam(GLFW_OPENED);        GLenum error=glGetError();        if (error!=GL_NO_ERROR)running=error;        glfwSleep(.017);    }    while (running==1);    glDeleteTextures(1,&img);    glfwTerminate();    return running;}

最佳答案

尝试添加“glColor3f(1,1,1);”在你的'drawmytex'函数中。我怀疑你的纹理是用当前颜色调制(相乘)的,如果是这样,问题不在于纹理拷贝,而是你显示它的方式。

关于c++ - 为什么 glCopyTexSubImage2D 不能正确复制我的正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com