Так что я знаю, как обеспечить ввод в шейдер как массив:OpenGL вход шейдера
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
//inside loop, provide the shader a layout location
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
Как бы обеспечить поплавок в качестве вклада? Я пробовал Googling повсюду, но не так много хороших ресурсов, документирующих шейдеры (для новичков, по крайней мере). Кроме того, как я могу использовать этот ввод? Это просто нравится:
layout(location = 0) in vec3 vertPosition //for my position
layout(location = 1/*or whatever i use*/) in float rotation
//rest of the code....
Спасибо за ваш ответ. Как я могу использовать несколько входов (из нескольких мест) в моем коде? (вторая часть вопроса, извините, если она не была очевидна :) –
Это первый параметр, есть разные способы передать его шейдеру, один из популярных способов - чередование данных, я отредактирую ответ. –
Как использовать переменную вращения в моем glsl? это будет 'layout (location = 0) в vec3 position'' layout (location = 1) в vec3 rotation' –