0

に奇妙な問題がOpenGLありglColor3fます。以下のコードでは、 の赤の値を変更すると、glColor3f下のポリゴンが赤の色合いに変わります。ただし、緑または青を変更すると、ポリゴンの色は変更されませんが、ゲーム内の他のすべてのオブジェクトの色が変更されます。基本的に、関数の赤の値のみが機能し、青と緑も機能する必要があります。

glColor3f(1.0f,1.0f,0.0f);
for(int i = 0; i < totalhumans; i++)
{
    if(humans[i].rage)
    {
        glPushMatrix();
            glTranslatef(humans[i].x,humans[i].y,humans[i].depth);
            glBegin(GL_QUADS);
                glVertex3f(-16.0f,-(humans[i].dimen->bodyh/2)-16,0.0f);
                glVertex3f(-16.0f,-(humans[i].dimen->bodyh/2)-8,0.0f);
                glVertex3f(16.0f,-(humans[i].dimen->bodyh/2)-8,0.0f);
                glVertex3f(16.0f,-(humans[i].dimen->bodyh/2)-16,0.0f);
            glEnd();
        glPopMatrix();
    }
}

これは私の初期化コードです:

void START_GAME()
{
    SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO|SDL_INIT_TIMER);
    Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2,2048);
    SDL_ShowCursor(SDL_DISABLE);
    loadsettings();
    if(fullscreen)
    {
        const SDL_VideoInfo *VideoInfo = SDL_GetVideoInfo();
        screen = SDL_SetVideoMode(VideoInfo->current_w, VideoInfo->current_h, 32, SDL_OPENGL|SDL_FULLSCREEN);
    }
    if(!fullscreen)
    {
        screen = SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
    }
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
    SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
    SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
    SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
    glClearColor(0.0f,0.0f,0.0f,0.0f);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_ALPHA_TEST);
    glAlphaFunc(GL_GREATER, 0.0f);

    setvariables();
    loadimages();
    loadsounds();

    SDL_WM_SetCaption("Freshmen Stuffing Boys",NULL);
    SDL_WM_SetIcon(badge,NULL);

    running = true;
}

GL_TEXTURE_2D編集: 何らかの理由で、無効にした後、必要な色が表示されることがわかりました。誰かがなぜそうなのか説明できますか?

この質問は重複していません。1) 私のコンピューターは新しく、そのグラフィックス ドライバーはすべて新しいため、GPU の問題ではなく、2) 初めてコードを書いているので、コードが他のコンピューターで機能するかどうかを考えてください。

4

1 に答える 1