@soveckii_fonarik
аспирант,начинающий программист - преподаватель

Как отрисовать куб в OpenGL используя SharpGL ?

Здравствуйте. Изучаю OpenGL, и столкнулся с такой проблемой, фоновая картинка затирает мой куб. Я так понял что картинка рисуется перед кубом и поэтому её не видно. Подскажите как это исправить.
//  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();
  • Вопрос задан
  • 4710 просмотров
Пригласить эксперта
Ответы на вопрос 2
@soveckii_fonarik Автор вопроса
аспирант,начинающий программист - преподаватель
без текстурки куб рисуется. я её отключал. еще я делал изменение дистанции в самой программе. т.е у меня получается при изменении дистанции что фон показывается во весь экран и в определенный момент начинаю проходить сквозь куб.
Ответ написан
Комментировать
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
Здесь кусок дерьма, а не код, однако работал. Когда-то. Может поможет. Тут Qt, но суть тот же OpenGL.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы