glfw openGL c ++ фон окна и заголовок

Это мой исходный код из серии уроков, которые я изучаю в отношении opengl 3+.

//#include <stdio.h>
//#include <stdlib.h>

#include <GL/glew.h>
#include <GL/glfw.h>
#include <glm/glm.hpp>
using namespace glm;

#include <iostream>
using namespace std;int main()
{

if( !glfwInit() )
{
fprintf( stderr, "Failed to initialize GLFW\n" );
return -1;
}

glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4); // 4x antialiasing
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // We want OpenGL 3.3
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //We don't want the old OpenGL

// Open a window and create its OpenGL context
if( !glfwOpenWindow( 1024, 768, 0,0,0,0, 32,0, GLFW_WINDOW ) )
{
fprintf( stderr, "Failed to open GLFW window\n" );
glfwTerminate();
return -1;
}
else
{
glfwSetWindowTitle( "Tutorial 01" );
}

// Initialize GLEW
glewExperimental=true; // Needed in core profile
if (glewInit() != GLEW_OK) {
fprintf(stderr, "Failed to initialize GLEW\n");
return -1;
}glfwEnable( GLFW_STICKY_KEYS );

do{
// Draw nothing, see you in tutorial 2 !

// Swap buffers
glfwSwapBuffers();

} // Check if the ESC key was pressed or the window was closed
while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS &&
glfwGetWindowParam( GLFW_OPENED ) );

return 0;
}

Все работает отлично, за исключением того, что когда окно инициализируется, оно имеет белый цвет фона и заголовок «ОКНО GLFW», но через 1-2 секунды заголовок меняется на Tutorial 01, как это должно было быть на первом месте, и фон становится черным как и следовало ожидать.

В предыдущих исследованиях opengl (2.x) с переизбытком, которые я делал пару лет назад, у меня не было подобных проблем, может кто-нибудь объяснить, что здесь не так?

0

Решение

Я получаю такое же поведение (даже запускаю выпуск exe за пределами IDE) на ATI FirePro V5700. Если вы действительно обеспокоены этим, скачать исходный код GLFW и измените строку 764 из carbon_window.c, строку 1210 из win32_window.c и строку 962 из x11_window.c.

.\ Lib \ углерод \ carbon_window.c

(void)SetWindowTitleWithCFString( _glfwWin.window, CFSTR( "GLFW Window" ) );

.\ Lib \ win32 \ win32_window.c

_glfwWin.window = CreateWindowEx( _glfwWin.dwExStyle,    // Extended style
_GLFW_WNDCLASSNAME,    // Class name
"GLFW Window",         // Window title
_glfwWin.dwStyle,      // Defined window style
wa.left, wa.top,       // Window position
fullWidth,             // Decorated window width
fullHeight,            // Decorated window height
NULL,                  // No parent window
NULL,                  // No menu
_glfwLibrary.instance, // Instance
NULL );                // Nothing to WM_CREATE

.\ Lib \ x11 \ x11_window.c

_glfwPlatformSetWindowTitle( "GLFW Window" );
2

Другие решения

Я не испытываю проблем, которые вы описываете. Я скопировал и вставил, скомпилировал, а затем запустил ваш код, когда вы его опубликовали (комментируя ссылки на GLM, так как у меня не установлена ​​эта библиотека). Заголовок для меня меняется мгновенно — я даже не вижу окна с заголовком «ОКНО GLFW», а цвет графической области сразу становится черным. Может быть, ваш компьютер просто не очень быстрый?

Что произойдет, если вы сделаете следующее?

do{
// Draw nothing, see you in tutorial 2 !
glClear(GL_COLOR_BUFFER_BIT);
// Swap buffers
glfwSwapBuffers();
glfwSleep(0.016);
} // Check if the ESC key was pressed or the window was closed
while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS && glfwGetWindowParam( GLFW_OPENED ) );

Редактировать: Мой графический процессор — Nvidia GTX 580 (способный по крайней мере OpenGL 4.3).

1

Цвет фона окна настраивается путем вызова функции openGL glClearColor () и обновился с glClear () функция.

Задержка в изменении заголовка окна, возможно, может быть связана с тем, что для создания openGL 3.x необходимо создать стандартный контекст OpenGL (версия 1.x или 2.x), а затем получить ваше приложение должно использовать контекст OpenGL 3.x. Задержка 1-2 секунды, хотя кажется большой.

0

Ну, как кажется, это связано с IDE, если вы запустите реальный .exe-файл, он работает так, как задумано, и без каких-либо задержек.

0
По вопросам рекламы [email protected]