2016-02-18 4 views
0

Я новичок в OpenGL, и я играл с рисовальными треугольниками с разными z-координатами. Из того, что я понимаю, ось z указывает на экран, а ось -z указывает на экран.Неподвижное поведение по оси Z при OpenGL при рисовании квадрата

Когда я нарисовать квадрат с 3 углами при 0,0 г-координату, а последний угол, скажем, -3,0 г-координату, я получаю это:

wat

Я не понять, как это делает эту форму ... Я думал, что это будет что-то вроде этого, так как 4-я вершина просто «далека».

enter image description here

Может кто-нибудь объяснить?

Edit: Это мои вершинные данные

// vertex array 
float vertices[] = { 
    -0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // top left, first 3 are location, last 3 are color 
    0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // top right 
    -0.5f, -0.5f, -2.0f, 0.0f, 0.0f, 1.0f, // bottom left 
    0.5f, -0.5f, 0.0f, 1.0f, 1.0f, 1.0f // bottom right 
}; 

// element buffer array 
GLuint elements[] = { 
    0, 1, 2, 
    2, 1, 3 
}; 

И я звоню жеребьевку, как:

glDrawElements(GL_TRIANGLES, 6,GL_UNSIGNED_INT,0); 
+0

Какая проекция вы используете, и на что установлены ваши отсекающие плоскости? (Хотя я не думаю, что любой из них сделает ваш квадрат похожим на L-образ) – immibis

+0

Я не применяю никаких преобразований к вершинам. Все, что я делаю, это передать необработанные данные вершин в шейдеры, а затем использовать эту программу. – Chara

ответ

0

Я предполагаю, что вы только что начал изучать OpenGL. Проблема в том, что любое значение, не принадлежащее диапазону [-1, 1], просто «выходит за пределы». Все значения нормированы в OpenGL. Это улучшает переносимость. Просто подумайте, что весь мир (если вы знакомы с разработкой игры) - это кубик боковых 2 единиц. Дальше, и вы где-то в другом месте. Надеюсь, поможет!

+0

Спасибо за ваш ответ! – Chara

+0

@Chara Нет проблем! Просто спросите, когда вам нужна помощь! – NightMare