0
我正在嘗試創建一些演示以幫助我理解OpenGL,GLEW和GLFW。我發現一些有趣的東西,我似乎無法改正。我正在嘗試渲染一組簡單的棋盤。如何設置像素座標以匹配GFLW3中的窗口座標
float points[] = {
0.0f, 1000.0f, 0.0f,
500.0f, 500.0f, 0.0f,
0.0f, 500.0f, 0.0f,
0.0f, 1000.0f, 0.0f,
500.0f, 500.0f, 0.0f,
500.0f, 1000.0f, 0.0f,
1000.0f, 0.0f, 0.0f,
500.0f, 500.0f, 0.0f,
1000.0f, 500.0f, 0.0f,
1000.0f, 0.0f, 0.0f,
500.0f, 500.0f, 0.0f,
500.0f, 0.0f, 0.0f
};
如果我與初始大小1000,1000創建窗口:
GLFWwindow* window = glfwCreateWindow(1000, 1000, "Simple example", NULL, NULL);
然而
如果我最初創建的窗口640,480的大小和調整它,我得到以下圖像:
我試着調整了幾個不同的方式,這似乎是最簡單的:
int FB_width, FB_height;
glfwGetFramebufferSize(window, &FB_width, &FB_height);
int win_width, win_height;
glfwGetWindowSize(window, &win_width, &win_height);
float width = 1000;
float height = 1000;
glfwSetWindowSize(window, width, height);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glfwSwapBuffers (window);
其中:
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
我試圖創建窗口最初較大(1200,1600 ),然後調整尺寸較小(640,480),然後再將其增加至1000,1000:結果相同。我知道窗口座標和像素座標之間存在差異,但我認爲這些會與回調函數相關。
我沒有看到直接設置framebuffer大小的方法,是否還有其他需要完成的工作?