2D OpenGL 게임 만들기. 프레임을 렌더링 할 때 먼저 계산 된 쿼드 지오메트리를 그린 다음 텍스처가 적용된 스프라이트를 그려야합니다. 내 렌더링 메서드의 본문에서 스프라이트 만 그리면 모든 것이 잘 동작합니다. 그러나 스프라이트 이전에 기하학적 인 사각형을 그리면 스프라이트의 텍스처가 이전에 사용 된 마지막 GL.Color3의 색상으로 변경됩니다. 어떻게 OpenGL (well, OpenTK)에게 "Ok, 우리는 형상을 그리며 스프라이트로 이동할 시간을 얻었습니까?"이전에 GL.Color3을 호출하면 텍스처가 잘못된 색으로 사용됩니다.
// Let's do some geometry
GL.Begin(BeginMode.Quads);
GL.Color3(_dashboardBGColor); // commenting this out makes my sprites look right
int shakeBuffer = 100;
GL.Vertex2(0 - shakeBuffer, _view.DashboardHeightPixels);
GL.Vertex2(_view.WidthPixelsCount + shakeBuffer, _view.DashboardHeightPixels);
GL.Vertex2(_view.WidthPixelsCount + shakeBuffer, 0 - shakeBuffer);
GL.Vertex2(0 - shakeBuffer, 0 - shakeBuffer);
GL.End();
// lets do some sprites
GL.Begin(BeginMode.Quads);
GL.BindTexture(TextureTarget.Texture2D, _rockTextureId);
float baseX = 200;
float baseY = 200;
GL.TexCoord2(0, 0); GL.Vertex2(baseX, baseY);
GL.TexCoord2(1, 0); GL.Vertex2(baseX + _rockTextureWidth, baseY);
GL.TexCoord2(1, 1); GL.Vertex2(baseX + _rockTextureWidth, baseY - _rockTextureHeight);
GL.TexCoord2(0, 1); GL.Vertex2(baseX, baseY - _rockTextureHeight);
GL.End();
GL.Flush();
SwapBuffers();
thx – Dejas