Я учусь учиться GLSL с Java и LWJGL, но в настоящее время у меня проблемы с базовым шейдером вершин.OpenGL Vertex Shader не работает
Vertex Shader:
#version 120
void main() {
gl_Position = gl_Vertex * 0.5;
}
Фрагмент Shader:
#version 120
void main() {
gl_FragColor = vec4(1.0, 0.4, 0.4, 1.0);
}
Rendering Код:
public void draw() {
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLES, size, GL_UNSIGNED_INT, 0);
glDisableClientState(GL_VERTEX_ARRAY);
}
Компиляция не дает никаких ошибок и пиксельный шейдер работает отлично, окрашивая простой треугольник Я нарисовал. Единственная проблема заключается в том, что я не вижу треугольник с уменьшенным масштабом (коэффициент 0,5), как и ожидалось, его вершины остаются неизменными. Что я делаю не так?
Вы уверены, что программа связана и разрешена? –
Да, Fragment Shader работает. – Thiago
'gl_Position = gl_Vertex * 0.5' изменяет весь 4-мерный вектор, включая w-компонент. Сделайте что-то вроде 'gl_Position = vec4 (gl_Vertex.xyz * 0.5, 1.0)' –