LINUX.ORG.RU

История изменений

Исправление 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 с крестиком в правом верхнем угле (т.е. окно можно закрыть). Так вот, если кликаешь на крестик, то окно закрывается. Но спустя некоторое время опять появляется (не сразу, попробуйте переключаться на др. подокна и/или поперемещать другие подокна - и оно появится). Считать это багом?