Answer the question
In order to leave comments, you need to log in
How to draw a cube in OpenGL using SharpGL ?
Hello. I'm learning OpenGL, and faced such a problem, the background image overwrites my cube. I understand that the picture is drawn in front of the cube and therefore it is not visible. Tell me how to fix it.
// Clear the color and depth buffers.
_gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
_gl.Enable(OpenGL.GL_DEPTH_TEST);
_gl.Enable(OpenGL.GL_TEXTURE_2D);
//_gl.LoadIdentity(); // Reset The View
////////////////////////////////////////////////// Background
//////////////////////////////////////////////////
_gl.MatrixMode(OpenGL.GL_PROJECTION);
_gl.LoadIdentity();
_gl.Ortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
_gl.MatrixMode(MatrixMode.Modelview);
_gl.LoadIdentity();
_gl.Enable(OpenGL.GL_TEXTURE_2D);
_gl.BindTexture(OpenGL.GL_TEXTURE_2D, textures[0]);
_gl.Disable(OpenGL.GL_DEPTH_TEST);
_gl.Begin(OpenGL.GL_QUADS);
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(-1.0f, -1.0f);
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(1.0f, -1.0f);
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(1.0f, 1.0f);
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(-1.0f, 1.0f);
_gl.End();
//////////////////////////////////////////////////
////////////////////////////////////////////////// end Background
_gl.MatrixMode(OpenGL.GL_PROJECTION);
_gl.Disable(OpenGL.GL_TEXTURE_2D);
// Reset the modelview.
_gl.LoadIdentity();
// Move into a more central position.
_gl.Translate(0.0f, 0.0f, _distance);
// Rotate the cube.
_gl.Enable(OpenGL.GL_DEPTH_TEST);
_gl.Rotate(_rquad, 1.0f, 1.0f, 1.0f);
//_gl.Enable(OpenGL.GL_POLYGON_MODE);
_gl.Begin(OpenGL.GL_QUADS); // Start Drawing The Cube
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(-1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(-1.0f, 1.0f, 1.0f); // Top Left Of The Texture and Quad
// Back Face
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(-1.0f, -1.0f, -1.0f); // Bottom Right Of The Texture and Quad
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(-1.0f, 1.0f, -1.0f); // Top Right Of The Texture and Quad
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(1.0f, 1.0f, -1.0f); // Top Left Of The Texture and Quad
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(1.0f, -1.0f, -1.0f); // Bottom Left Of The Texture and Quad
// Top Face
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(-1.0f, 1.0f, -1.0f); // Top Left Of The Texture and Quad
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(-1.0f, 1.0f, 1.0f); // Bottom Left Of The Texture and Quad
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(1.0f, 1.0f, 1.0f); // Bottom Right Of The Texture and Quad
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(1.0f, 1.0f, -1.0f); // Top Right Of The Texture and Quad
// Bottom Face
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(-1.0f, -1.0f, -1.0f); // Top Right Of The Texture and Quad
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(1.0f, -1.0f, -1.0f); // Top Left Of The Texture and Quad
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(-1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
// Right face
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(1.0f, -1.0f, -1.0f); // Bottom Right Of The Texture and Quad
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(1.0f, 1.0f, -1.0f); // Top Right Of The Texture and Quad
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(1.0f, 1.0f, 1.0f); // Top Left Of The Texture and Quad
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
// Left Face
_gl.TexCoord(0.0f, 0.0f); _gl.Vertex(-1.0f, -1.0f, -1.0f); // Bottom Left Of The Texture and Quad
_gl.TexCoord(1.0f, 0.0f); _gl.Vertex(-1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
_gl.TexCoord(1.0f, 1.0f); _gl.Vertex(-1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
_gl.TexCoord(0.0f, 1.0f); _gl.Vertex(-1.0f, 1.0f, -1.0f); // Top Left Of The Texture and Quad
// Flush OpenGL.
_gl.Flush();
Answer the question
In order to leave comments, you need to log in
без текстурки куб рисуется. я её отключал. еще я делал изменение дистанции в самой программе. т.е у меня получается при изменении дистанции что фон показывается во весь экран и в определенный момент начинаю проходить сквозь куб.
Здесь кусок дерьма, а не код, однако работал. Когда-то. Может поможет. Тут Qt, но суть тот же OpenGL.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question