Как отобразить 2 или более объектов в openGL (модель - вид - проекционные матрицы и шейдеры)

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

Но, что делать, когда я хочу нарисовать 2 или более объектов, например, куб и треугольник? Я полагаю, что матрицы View и Projection должны быть одинаковыми для треугольника и куба, мне нужна только разная матрица Model, верно? Это значит, что у меня будет два MVP?

//Example (using GLM):

glm::mat4 MVPC = Projection * View * ModelCube; 
glm::mat4 MVPT = Projection * View * ModelTriangle; 

Так что же мне теперь делать с этими двумя? Это вершинный шейдер, который хорошо работает для куба

//vertex shader
#version 330 core

layout(location = 0) in vec3 verticesCube;

uniform mat4 MVPC;

void main(){

     gl_Position =  MVPC * vec4(verticesCube,1);

}

А что мне делать с MVPT (треугольник) в шейдере, я пробовал возиться с разными вещами, но я не могу заставить его работать, я не могу отображать одновременно куб и треугольник.

6
задан jazzpi 12 February 2017 в 00:31
поделиться