OpenTK를 사용하고 있는데 OpenGL을 사용할 수있는 기능의 개념을 이해하는 데 어려움이 있습니다. perspective 매트릭스는 onResize 함수에 있습니다.OpenGL 텍스처 + 번개 + 블렌딩 문제
텍스처를 표시하려고합니다.
기능별 렌더링 내 :
GL.ClearColor(0.5f, 0.5f, 0.5f, 1.0f);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.Enable(EnableCap.Texture2D);
GL.Enable(EnableCap.DepthTest);
Ground.Draw();
내 Ground.Draw() 함수 (sizeXZ.Z, sizeXZ.Y는 상수)
GL.PushMatrix();
GL.Translate(new Vector3(-sizeXZ.X/2, -1, sizeXZ.Y/2));
GL.BindTexture(TextureTarget.Texture2D, Textures.GetTextureId(textureName));
GL.Begin(PrimitiveType.Quads);
GL.Color3(1,1,1);
GL.Normal3(0, 1, 0);
GL.TexCoord2(1f, 1f); GL.Vertex3(0, 0, 0);
GL.TexCoord2(1f, 0f); GL.Vertex3(sizeXZ.X, 0, 0);
GL.TexCoord2(0f, 0f); GL.Vertex3(sizeXZ.X, 0, -sizeXZ.Y);
GL.TexCoord2(0f, 1f); GL.Vertex3(0, 0, -sizeXZ.Y);
GL.End();
GL.PopMatrix();
그것은 검정색 비 질감 쿼드를 나타낸다. 나는 질감이 나타납니다 몇 가지 빛을 추가 할 수 있지만 일부 쿼드의 색상을 사라지면 : Color3
의
1. 사용법을 보면 :
GL.BindTexture(TextureTarget.Texture2D, Textures.GetTextureId(textureName));
GL.Begin(PrimitiveType.Quads);
GL.Normal3(0, 0, 1);
if (true) GL.Color4(0,1,0,1); // it appears to be the background color, not green
if (false) GL.TexCoord2(1f, 0f); GL.Vertex3(0, 0, 0);
if (false) GL.TexCoord2(1f, 1f); GL.Vertex3(3f, 0, 0);
if (false) GL.TexCoord2(0f, 1f); GL.Vertex3(3f, 3f, 0);
if (false) GL.TexCoord2(0f, 0f); GL.Vertex3(0, 3f, 0);
GL.Color4(1, 1, 1, 1);
GL.End();
조명을 활성화하지 않으므로 중요하지 않습니다. 나는 당신이 보통을 지정할 필요가 없다고 생각한다. 쿼드를 보았으므로 좌표 또는 행렬에 문제가되지 않습니다. 텍스처 좌표가 잘 보입니다. 텍스처를 바인딩하지 않으면 어떻게됩니까? 그러면 올바른 색상으로 표시됩니까? –
'GL.Color3 (1,1,1)'- 검은 색을 그립니다. 'GL.Color3 (Color.Aqua)'- 정상적으로 그립니다. –