История изменений
Исправление Gyros, (текущая версия) :
Все получилось! Надо было добавить перед выводом своей геометрии
glUseProgram( my_program_handle);
Он свой nk_program_handle ставит в текущее использование, что естественно (он тоже шейдеры использует). Но с другой стороны странно, что геометрию он подхватил из вершинного буфера, а цвет - нет. Какое-то undefined behavior.
Я бы не сказал, что Nuklear не знает про OpenGL.
Посмотрел внимательнее в функции nk_glfw3_render:
NK_API void
nk_glfw3_render(struct nk_glfw* glfw, enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_buffer)
{
/* setup global state */
glEnable(GL_BLEND);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_CULL_FACE);
glDisable(GL_DEPTH_TEST);
glEnable(GL_SCISSOR_TEST);
glActiveTexture(GL_TEXTURE0);
/* setup program */
glUseProgram(dev->prog);
...
/* default OpenGL state */
glUseProgram(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindVertexArray(0);
glDisable(GL_BLEND);
glDisable(GL_SCISSOR_TEST);
}
в конце он делает glUseProgram(0). Значит самый первый раз у меня выводилось в цвете, а потом - нет. Я видел, что вначале что-то цветное мелькнуло.
Кстати, еще заметил в demo/glfw_opengl3 там есть окно NodeEdit с крестиком в правом верхнем угле (т.е. окно можно закрыть). Так вот, если кликаешь на крестик, то окно закрывается. Но спустя некоторое время опять появляется (не сразу, попробуйте переключаться на др. подокна и/или поперемещать другие подокна - и оно появится). Считать это багом?
Исходная версия Gyros, :
Все получилось! Надо было добавить перед выводом своей геометрии
glUseProgram( my_program_handle);
Он свой nk_program_handle ставит в текущее использование, что естественно (он тоже шейдеры использует). Но с другой стороны странно, что он геометрию он подхватил из вершинного буфера, а цвет - нет. Какое-то undefined behavior.
Я бы не сказал, что Nuklear не знает про OpenGL.
Посмотрел внимательнее в функции nk_glfw3_render:
NK_API void
nk_glfw3_render(struct nk_glfw* glfw, enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_buffer)
{
/* setup global state */
glEnable(GL_BLEND);
glBlendEquation(GL_FUNC_ADD);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_CULL_FACE);
glDisable(GL_DEPTH_TEST);
glEnable(GL_SCISSOR_TEST);
glActiveTexture(GL_TEXTURE0);
/* setup program */
glUseProgram(dev->prog);
...
/* default OpenGL state */
glUseProgram(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindVertexArray(0);
glDisable(GL_BLEND);
glDisable(GL_SCISSOR_TEST);
}
в конце он делает glUseProgram(0). Значит самый первый раз у меня выводилось в цвете, а потом - нет. Я видел, что вначале что-то цветное мелькнуло.
Кстати, еще заметил в demo/glfw_opengl3 там есть окно NodeEdit с крестиком в правом верхнем угле (т.е. окно можно закрыть). Так вот, если кликаешь на крестик, то окно закрывается. Но спустя некоторое время опять появляется (не сразу, попробуйте переключаться на др. подокна и/или поперемещать другие подокна - и оно появится). Считать это багом?