2016-10-15 6 views
1

나만의 게임 그래픽 엔진을 만들고 있습니다. 나는 유니티 (Unity)와 같은 다른 것들을 사용하는 방법을 살펴 보았지만, 그들은 나의 필요에 부합하지 않습니다. 어쨌든 OpenTK를 사용하고 있습니다. (이것은 2D 게임입니다.) 문제는 화면에 텍스처를 그릴 때 쿼드를 화면에 그리면 텍스처의 색상이 어두워집니다.C# OpenTK에서 색상이 지정된 사각형을 그린 후 텍스처가 어두워지는 것을 어떻게 막을 수 있습니까?

public void Texture(int ID, Vector2 size, Vector2 pos, Vector2 texSize, Vector2 texPos) 
    { 
     pos.Y = -pos.Y; 

     GL.Enable(EnableCap.Texture2D); 
     GL.BindTexture(TextureTarget.Texture2D, ID); 
     GL.Begin(PrimitiveType.Quads); 

     GL.TexCoord2(texPos.X, texPos.Y); 
     GL.Vertex2(pos.X, pos.Y); 

     GL.TexCoord2(texPos.X + texSize.X, texPos.Y); 
     GL.Vertex2(pos.X + size.X, pos.Y); 

     GL.TexCoord2(texPos.X + texSize.X, texPos.Y + texSize.Y); 
     GL.Vertex2(pos.X + size.X, pos.Y - size.Y); 

     GL.TexCoord2(texPos.X, texPos.Y + texSize.Y); 
     GL.Vertex2(pos.X, pos.Y - size.Y); 

     GL.End(); 
    } 

내가 ++ 추락하는 y를 시스템을 좌표 윈도우 폼을 사용하고 있기 때문에 나는 Y를 반전 오전 : 저는 여기에 텍스처를 그릴 사용하고있는 방법이다. 나는 이런 식으로 호출 오전 : 그려지는 아무 것도 존재하지 않는 경우

Texture(backdropTextureID, new Vector2(1f, 1f), new Vector2(-0.5f, -0.5f), new Vector2(1f, 1f), new Vector2(0f, 0f)); 

가, 예상대로,이를 화면의 중앙에 backdropTextureID의 GL ID와 텍스처를 그립니다. 그래도 컬러 쿼드를 그리면 텍스처가 어두워집니다. 다음은 쿼드 그리기에 사용하는 방법입니다.

public void Quad(Vector2 pos1, Vector2 pos2, Vector2 pos3, Vector2 pos4, Color color1, Color color2, Color color3, Color color4) 
    { 
     GL.Disable(EnableCap.Texture2D); 
     pos1.Y = -pos1.Y; 
     pos2.Y = -pos2.Y; 
     pos3.Y = -pos3.Y; 
     pos4.Y = -pos4.Y; 

     GL.Begin(PrimitiveType.Quads); 

     GL.Color3(color1); 
     GL.Vertex2(pos1); 

     GL.Color3(color2); 
     GL.Vertex2(pos2); 

     GL.Color3(color3); 
     GL.Vertex2(pos3); 

     GL.Color3(color4); 
     GL.Vertex2(pos4); 

     GL.End(); 
    } 

위의 이유로 다시 Y를 반전합니다. 또한 텍스처를 그리는 방법에서 EnableCap.Texture2D를 활성화하고 색상이 지정된 쿼드를 그릴 때 비활성화합니다. 다음과 같이 쿼드 메서드를 호출합니다.

Quad(new Vector2(0.0f, 0.0f), new Vector2(0.5f, 0.0f), new Vector2(0.5f, 0.5f), new Vector2(0.0f, 0.5f), Color.Gray, Color.Gray, Color.Gray, Color.Gray); 

누구든지 나를 도와 줄 수 있으면 미리 감사드립니다. 기본적으로 : C# OpenTK에서 색상이 지정된 쿼드를 그린 후에 텍스처가 어두워지는 것을 어떻게 방지합니까?

답변

0

이 문제가있는 사람은 누구나 알아 냈습니다. 내가 입힌 색깔의 4 각형에주는 것과 같은 색깔. 텍스처 그리기 시작 부분에

GL.Color3(Color.Transparent); 

을 추가하기 만하면됩니다.