私自身のゲームグラフィックエンジンを作成しています。私はユニティのようなものを使ってみましたが、私のニーズに合っていません。とにかく、私は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は座標系をWindowsフォームに使用されていますので、私はYを反転しています:ここで私はテクスチャを描画するために使用しています方法があります。期待されるように描かれている他に何も存在しない場合、それは画面の中央にbackdropTextureIDのGL IDでテクスチャを描画し、
Texture(backdropTextureID, new Vector2(1f, 1f), new Vector2(-0.5f, -0.5f), new Vector2(1f, 1f), new Vector2(0f, 0f));
:私はこのようにそれを呼び出しています。私も色のついた四角形を描くと、テクスチャは暗くなります。クワッドの描画に使用しているメソッドは次のとおりです。
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を有効にしていて、色付きのクワッドを描画するときに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で色付きの四角形を描いた後、テクスチャが黒くなるのを止めるにはどうすればいいですか?