GL_POINT_SPRITE_ARB渲染问题

GL_POINT_SPRITE_ARB problems with rendering

本文关键字:问题 SPRITE POINT GL ARB      更新时间:2023-10-16

我正在学习OpenGL的一些基础知识,当我决定制作粒子系统时,我遇到了一些问题。当我尝试用GL_POINT_SPRITE渲染GL_POINT时,它们不会显示在屏幕上,除非它们首先是渲染器。我用于渲染的代码:

glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glColor3f(1.0f,1.0f,1.0f);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, t->id());
    glBegin(GL_QUADS);
        glTexCoord2f(0.0f,0.0f);
        glVertex2f(10,10);
        glTexCoord2f(1.0f,0.0f);
        glVertex2f(100,10);
        glTexCoord2f(1.0f,1.0f);
        glVertex2f(100,100);
        glTexCoord2f(0.0f,1.0f);
        glVertex2f(10,100);
    glEnd();
    glDisable(GL_TEXTURE_2D);
    glPopMatrix();
    glPushMatrix();
    glColor3f(1.0f,1.0f,1.0f);
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_POINT_SPRITE_ARB);
    glBindTexture(GL_TEXTURE_2D, t->id());
    glTexEnvf(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
    glPointSize(32);
    glBegin(GL_POINTS);
    glVertex2f(300,300);
    glEnd();
    glDisable(GL_POINT_SPRITE);
    glDisable(GL_TEXTURE_2D);
    glPopMatrix();
SDL_GL_SwapBuffers();

这只会渲染有纹理的四边形,而不会渲染点。当我更改顺序(首先是渲染点,然后是四边形)时,它们都会出现在屏幕上(纹理点和纹理四边形)。

我是做错了什么,还是这种行为是正确的?

关于我的电脑的一些信息可能会有所帮助-带有AMD Mobility Radeon HD 4550(Catalyst 12.6驱动程序)的Arch Linux 64位

我今天遇到了这个问题。这似乎为我解决了问题:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT|GL_ACCUM_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);  

我想是清除了深度缓冲区。我知道这是一个很老的问题,但以防万一其他人遇到同样的问题。。。。。。