【问题标题】:call to GLeeInit() gives EXC_BAD_ACCESS调用 GLeeInit() 给出 EXC_BAD_ACCESS
【发布时间】:2017-03-23 06:48:45
【问题描述】:

所以我正在尝试解决计算机图形课程的练习,但我在尝试让项目运行时遇到了问题。

所以我们刚刚开始使用 OpenGL,我们正在使用 GLee 库。由于我正在开发 OSx 并且该项目并不是为此而设计的,因此我已经在强制我的 mac 使用 OpenGL 3.0 而不是 2.1 时遇到了一些麻烦,但我认为调用 GLeeInit() 应该可以解决这个问题。现在这是我遇到问题的地方。当我调用 GLeeInit() 时,这给了我一堆 EXC_BAD_ACCESS' 并且整个东西以返回码 11 退出。

对我来说,我似乎在某个地方尝试了一个空指针访问,但我不知道实际问题是什么。

编辑:从第一个答案中获取建议,我将简单地删除对 GLee 的调用,因为我可能在 OS x 上不需要 GLee。现在我遇到以下错误“错误:0:1:'':不支持版本'130'”,它完全没有告诉我..

编辑:试图让我的着色器在这里工作是较短的代码..所以我认为我尝试将 2.0 着色器编译为 3.0 或类似的东西并不是我提到的问题

\#version 130

in vec4 color_out;

//=======================================================================
// Fragment program entry point
//=======================================================================
void main(void)
{
    gl_FragColor = color_out;
} 

【问题讨论】:

标签: c macos opengl


【解决方案1】:

因为我正在开发 OSx

……你不需要 GLee。严重地。 您根本不需要 GLee、GLEW 或任何其他扩展加载器,因为您使用的是 MacOS X。 仅在 Windows、Linux、Solaris 和 BSD 上才需要加载现代 OpenGL 入口点。 但在 MacOS X 中,您可以获得所有 OpenGL 入口点,包括 OpenGL-3 和 -4 开箱即用

【讨论】:

  • 好吧,我想我的部分问题是我不太明白 Glee 的用途是什么。问题是我们提供的框架使用 GLee .. 那么有没有一种简单的方法来解决这个问题?因为如果我不使用 GLeeInit() 则代码退出并出现需要 OpenGL 3 的错误。那么如何将其链接到代码中?对不起,如果这个问题看起来很愚蠢..对 OpenGL 和所有这些东西来说真的是全新的..
  • 我已经手动删除了对 Glee 的所有调用,但是当我现在尝试运行整个程序时,我收到了这个错误。“错误:0:1:'':不支持版本'130'”
  • @Desperate:该错误可能来自 GLSL 编译器,它告诉您尝试在 OpenGL-3.x 上下文中编译 OpenGL-2.x 着色器。 OpenGL 着色器版本从 OpenGL-3 的 1.50 开始。 OpenGL-3.3 将 GLSL 着色器版本与 OpenGL 版本“同步”。假设你有一个 3.3 的上下文,你应该让你的着色器到 #version 330
  • 就是这样!!当我检查我的 gl.h 文件时,我可以看到我尝试编译的两个着色器来自 OpenGL 2.0!.. 那么如何强制我的程序使用 3.0 着色器呢? ://
  • @Desperate:这不是你可以“强迫”你的程序去做的事情。我们讨论的是用于编写着色器的 GLSL 编程语言 的版本。所以你可能不得不重写你的着色器代码。例如,专门的 texture1D, texture2D, … 函数已被多态 texture 函数替换。有关概述,请参阅opengl.org/wiki/Core_Language_(GLSL),并查阅 GLSL 语言参考以了解版本之间的差异。
猜你喜欢
  • 2022-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多