Следующие шейдеры завершаются с ошибкой с возвратом -1, когда я пытаюсь.
col_attr = glGetAttribLocation(prog, "v_col");
я пробовал разные настройки, включая переключение,
gl_FragColor
на
outColor
и
#version 300 es
до
#version 150 core
и многие другие, прежде чем я понял, что я полностью потерян и есть так много переменных, которых я не знаю.Мне просто нужны эти простые шейдеры, преобразованные во что-то, что работает с GLESv3 для Android NDK в C ++.Вся помощь высоко ценится.Спасибо.
Оригинальный вершинный шейдер
#version 150 core
in vec3 v_pos;
in vec4 v_col;
out vec4 color;
uniform mat4 projection;
uniform mat4 view;
void main(){
color = v_col;
gl_Position = projection * view * vec4(v_pos, 1.0);
}
Оригинальный фрагментный шейдер
#version 150 core
in vec4 color;
void main(){
gl_FragColor = color;
}
Обновление: обнаружено, что при компиляции происходит сбой только Фрагмента.
Новый вершинный шейдер - компилируется!
return "#version 300 es \n"
"in vec3 v_pos; \n"
"in vec4 v_col; \n"
"out vec4 color; \n"
"uniform mat4 projection; \n"
"uniform mat4 view; \n"
"void main() \n"
"{ \n"
" color = v_col; \n"
" gl_Position = projection * view * vec4(v_pos, 1.0); \n"
"} \n";
Новый фрагментный шейдер - не компилируется!
return "#version 300 es \n"
"in vec4 color; \n"
"out vec4 outColor; \n"
"void main() \n"
"{ \n"
" outColor = color; \n"
"} \n";
Новый фрагментный шейдер - компилируется!
return "#version 300 es \n"
"precision mediump float; \n"
"in vec4 color; \n"
"out vec4 outColor; \n"
"void main() \n"
"{ \n"
" outColor = color; \n"
"} \n";