に奇妙な問題が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) 初めてコードを書いているので、コードが他のコンピューターで機能するかどうかを考えてください。