gpt4 book ai didi

在 Maverick : glShaderSource no matching function 上使用 GLFW3 的 C++ 代码

转载 作者:行者123 更新时间:2023-11-28 02:45:11 24 4
gpt4 key购买 nike

我正在尝试在 Mac 上使用库 GLFW3 编译一个相当简单的 C++ 程序。操作系统是 OS 10.9.3 (Maverick)。在我尝试使用 GLSL 函数(例如 glShaderSource 等)之前,它编译得很好。

这是我使用的包含文件:

#include <GLFW/glfw3.h>
#include <cstdlib>
#include <cstdio>

我正在使用 OpenGL3.2:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

这是编译程序的命令行:

clang++ -o xxxx xxxx.cpp  -framework Cocoa -framework OpenGL  -Wall -lglfw3 -I/usr/local/include/ -L/usr/local/lib  -framework Quartz -framework IOKit

现在是错误:

xxxx:38:5: error: no matching function for call to 'glShaderSource'
glShaderSource(vertexShader, 1, &vertexSource, NULL);

我确定我错过了一些基本的东西,但是什么?感谢您的帮助。我担心它与 glext 有关,但不确定该怎么做。我在 Web 上的 Stackoverflow 上找不到任何内容。

最佳答案

在 OS X 上,您需要包含 <OpenGL/gl3.h>获取 GL3+ 级别入口点的定义。

在 GLFW 文档中,在“构建使用 GLFX 的程序”(http://www.glfw.org/docs/latest/build.html)页面上,有一个名为“GLFW 头选项宏”的部分。相关部分是:

These macros may be defined before the inclusion of the GLFW header and affect the behavior of the header.

GLFW_INCLUDE_GLCOREARB makes the header include the modern GL/glcorearb.h header (OpenGL/gl3.h on OS X) instead of the regular OpenGL header.

所以下面应该可以解决问题:

#define GLFW_INCLUDE_GLCOREARB
#include <GLFW/glfw3.h>

查看 glfw3.h header ( http://www.glfw.org/docs/latest/glfw3_8h_source.html ) 确认它将包含 <OpenGL/gl3.h>有了这个额外的定义。

关于在 Maverick : glShaderSource no matching function 上使用 GLFW3 的 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24664722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com