使用XCode在Mac OS X上使用GLSL应用程序的奇怪行为

时间:2013-02-09 11:23:14

标签: xcode opengl glsl

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

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

  1. 创建新的终端项目
  2. 在目标构建阶段链接Cocoa.framework,OpenGL.framework和GLUT.framework
  3. 编写一个简单的OpenGL / glut / glsl示例程序
  4. 将“复制文件”构建阶段添加到目标可执行文件,将目标设置为可执行文件并将着色器源文件添加到该构建阶段
  5. 运行程序。
  6. 代码在另一台unix机器上工作得很好,它也是由我的班级讲师为Mac编写的,因此代码应该没有问题。我认为我的项目设置有误。

    我遇到的奇怪行为是: 当我调整过剩窗口时,显示的图像被破坏,有时只显示正确的图像。我可以根据要求发布图片链接。

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

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

    #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);
    }
    

1 个答案:

答案 0 :(得分:0)

可能需要设置GLUT reshape 回调,在窗口时调用该回调。在该回调中,您通常会更新以下内容:

  • 视口
  • 您的投影转换(如果您使用的是)

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

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

您可以通过致电reshape

来注册glutReshapeFunc,就像您的其他GLUT回调一样