0

我正在尝试在 Mac OS X 上的 XCode 中设置一个有效的 OpenGL/GLUT/GLSL 示例。

这是我到目前为止所做的:

  1. 创建一个新的终端项目
  2. 在目标构建阶段链接 Cocoa.framework、OpenGL.framework 和 GLUT.framework
  3. 编写一个简单的OpenGL/glut/glsl示例程序
  4. 将“复制文件”构建阶段添加到目标可执行文件,将目标设置为可执行文件并将着色器源文件添加到该构建阶段
  5. 运行程序。

该代码在另一台 unix 机器上运行良好,而且它也是由我的课堂讲师为 Mac 编写的,因此代码应该没有问题。我认为我的项目设置存在错误。

我遇到问题的奇怪行为是:当我调整 glut 窗口的大小时,显示的图像被破坏,并且仅有时会显示正确的图像。我可以根据要求发布图片链接。

找到着色器源文件。这只是我担心的奇怪的图形行为。

我的着色器代码:顶点着色器:

#version 150
in  vec3 in_Position;
void main(void)
{
gl_Position = vec4(in_Position, 1.0);
}

片段着色器:

#version 150
out vec4 out_Color;
void main(void)
{
out_Color = vec4(1.0);
}
4

1 回答 1

0

在这种情况下,您可能需要设置一个 GLUT reshape回调,该回调在窗口中调用。在该回调中,您通常会更新一些内容:

  • 视口
  • 你的投影变换(如果你正在使用一个)

GLUT reshape 函数的一个常见简单实现是:

void
reshape( int width, int height )
{
    glViewport( 0, 0, width, height );
    // Update projection transform, usually including new window
    //   aspect ratio: width / height
}

您可以reshape像其他 GLUT 回调一样通过调用来注册glutReshapeFunc

于 2013-02-11T06:25:53.903 回答