在Maverick上使用GLFW3的c++代码:glShaderSource没有匹配函数
C++ code using GLFW3 on Maverick: glShaderSource no matching function
我正在尝试使用Mac上的库GLFW3编译一个相当简单的c++程序。操作系统是OS 10.9.3 (Maverick)。它编译得很好,直到我尝试使用glShaderSource等GLSL函数。
下面是我使用的包含文件:
#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);
我确信我错过了一些基本的东西,但是什么?谢谢你的帮助。我担心这与ext有关,但不知道该怎么做。我在网上找不到任何关于Stackoverflow的东西
在OS X上,您需要包含<OpenGL/gl3.h>
以获得GL3+级别入口点的定义。
在GLFW文档中,在"构建使用GLFW的程序"一页。(http://www.glfw.org/docs/latest/build.html),有一个名为"GLFW头选项宏"的部分。相关章节如下:
这些宏可以在包含GLFW头文件之前定义,并影响头文件的行为。
GLFW_INCLUDE_GLCOREARB使报头包含现代的GL/glcorearb.h报头(OS X上的OpenGL/gl3.h)而不是常规的OpenGL报头。
那么下面的代码就可以了:
#define GLFW_INCLUDE_GLCOREARB
#include <GLFW/glfw3.h>
查看glfw3.h
标头(http://www.glfw.org/docs/latest/glfw3_8h_source.html)确认它将包含<OpenGL/gl3.h>
与这个额外的定义。
相关文章:
- 使用 Win32 读取文件时,glShaderSource 访问冲突
- C 将字符传递给Glshadersource
- OpenGL GlshaderSource抛出了例外
- 参数对glShaderSource的含义是什么?
- 当超过一个char指针时编译错误(glShaderSource)
- 在Maverick上使用GLFW3的c++代码:glShaderSource没有匹配函数
- 如何将 std::string 传递给 glShaderSource
- OpenGl XUbuntu 14.04 glShaderSource, glCompileShader, glCrea
- openGL, GLFW, 1281错误在glShaderSource上,下一个glShaderSource工作得很好