@Amigo2019

Почему не рисует ось z?

Добрый день!
Не могу понять почему не рисует ось z.Оси x и у рисует.
int main(int argc, char* argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
	glutInitWindowSize(1200, 800);
	glutCreateWindow("OpenGL lesson 5");
	glutReshapeFunc(reshape);
	glutDisplayFunc(display);
	glutKeyboardFunc(processNormalKeys);
	glutSpecialFunc(processSpecialKeys);
	glutMainLoop();
	return 0;
}
void reshape(int w, int h)
{
	glViewport(0, 0, w, h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-20, 20, -20, 20,-20, 20);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glClearColor(1, 1, 1, 0);
}
void display()
{
	float left = -15;
	float right = 15;
	float bottom = -15;
	float top = 15;
	float znear =15;
	float zfar = -15;
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 0.0, 0.0);
	glPushMatrix();

	glBegin(GL_LINES);
	glColor3f(0, 0, 1);//x
	glVertex3f(left, 0, 0);
	glVertex3f(right, 0, 0);
	glColor3f(0, 1, 0);//y
	glVertex3f(0, bottom,0);
	glVertex3f(0, top,0);
	glColor3f(0, 1, 1);//z
	glVertex3f(0, 0,znear);
	glVertex3f(0, 0,zfar);
	glEnd();

	glColor3f(1.0, 0.0, 0.0);
	glutWireTeapot(5);
	glPopMatrix();
	glFlush();
	glutSwapBuffers();

}
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@MarkusD
все время мелю чепуху :)
Для начала стоит учесть общую систему опознания осей в 3D-пространстве. Оси X, Y, Z помечаются каналами цветов R, G, B в однозначном соответствии. Ось X всегда и везде красная. Ось Y - зеленая. А ось Z - синяя.

glVertex3f(0, 0,znear);
glVertex3f(0, 0,zfar);

Этот код говорит рисовать коллинеарную со взглядом линию. GPU не станет тратить ресурсы на всю линию и нарисует только одну точку, которая с высокой долей вероятности будет затерта при растеризации других примитивов. Ведь все три линии у тебя рисуются из нулевых координат.

Сдвинь начальные координаты осей X и Y от нуля (хоть на 1pt), измени цвет оси Z, тогда ее станет немного лучше видно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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