首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置像素和弦以匹配GFLW3中的窗口和弦

如何设置像素和弦以匹配GFLW3中的窗口和弦
EN

Stack Overflow用户
提问于 2015-10-03 18:02:52
回答 1查看 53关注 0票数 0

我试图创建一些演示来帮助我理解OpenGL、GLEW和GLFW。我发现了一些我似乎无法纠正的有趣的东西。我正在尝试渲染一组简单的棋盘。

代码语言:javascript
复制
    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的窗口:

代码语言:javascript
复制
 GLFWwindow* window = glfwCreateWindow(1000, 1000, "Simple example", NULL, NULL);

棋盘正确显示:

但是,如果我最初创建的窗口大小为640,480,并对其进行了调整,我将得到以下图像:

我尝试过几种不同的调整大小的方法,这似乎是最简单的方法:

代码语言:javascript
复制
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);

其中:

代码语言:javascript
复制
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

我尝试先创建更大的窗口(1200,1600),然后调整大小(640,480),然后再将其增加到1000,1000:相同的结果。我知道窗口坐标和像素坐标是有区别的,但是我认为这与回调函数有关。

我没有看到一种直接设置框架缓冲区大小的方法,还有什么需要做的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-03 18:02:52

唉,它是在我的投影矩阵到顶点着色,我使用了错误的参数为PRO_mat,我的宽度和高度是错误的。

代码语言:javascript
复制
// Vector of 3 points, add the 4th value in the vertex shader
const char* vertex_shader =
"#version 400\n"
"in vec3 vp;"
"uniform mat4 PRO_mat;"
"void main () {"
"  gl_Position =  PRO_mat*vec4 (vp, 1.0);"
"}";

Eigen::Matrix<GLfloat,4,4> pro_mat_inv = Eigen::Matrix4f::Identity();
pro_mat_inv(0,0) = width/2;
pro_mat_inv(0,3) = width/2;
pro_mat_inv(1,1) = height/2;
pro_mat_inv(1,3) = height/2;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32925731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档