C++ 无法在OSX上更改OpenGL版本
我正在使用FreeGLUT,我想使用OpenGL3.2。我使用的是MacBook Pro(15),2015年初的Mojave 10.14.3,根据苹果的文档,它支持OpenGL高达4.1。我用brew下载了freeglut。但是,无论我在glutInitContextVersion中添加了什么,版本都不会改变。无论我做什么,OpenGL版本都保持在2.1 英特尔Iris Pro OpenGL引擎,2.1英特尔-12.4.7 使用的代码如下所示:C++ 无法在OSX上更改OpenGL版本,c++,macos,opengl,glut,freeglut,C++,Macos,Opengl,Glut,Freeglut,我正在使用FreeGLUT,我想使用OpenGL3.2。我使用的是MacBook Pro(15),2015年初的Mojave 10.14.3,根据苹果的文档,它支持OpenGL高达4.1。我用brew下载了freeglut。但是,无论我在glutInitContextVersion中添加了什么,版本都不会改变。无论我做什么,OpenGL版本都保持在2.1 英特尔Iris Pro OpenGL引擎,2.1英特尔-12.4.7 使用的代码如下所示: #include <iostream>
#include <iostream>
#include <GL/freeglut.h>
using namespace std;
void displayFunc() {
glClearColor(1.0, 1.0, 0.5, 0.5);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glFlush();
}
int main(int argc, char * argv[]) {
glutInit(&argc, argv);
glutInitContextVersion(3,2);
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutInitWindowPosition(10, 10);
glutInitWindowSize(480, 272);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
glutCreateWindow("Window");
glutDisplayFunc(displayFunc);
// Print the OpenGL version
std::printf("%s\n%s\n", glGetString(GL_RENDERER), glGetString(GL_VERSION));
glutMainLoop();
return 0;
}
cmake_minimum_required(VERSION 3.3)
project(AVT7)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework GLUT -framework OpenGL -framework Cocoa")
include_directories(/usr/local/Cellar/freeglut/3.0.0/include)
link_directories(/usr/local/Cellar/freeglut/3.0.0/lib)
add_executable(AVT7 hello.cpp)
target_link_libraries(AVT7 glut)
我知道苹果不再支持OpenGL可能会有问题,但是它应该仍然可以工作(尤其是FreeGLUT)。你的笔记本电脑有哪个GPU?如果你有一个额外的AMD卡(带有自动GPU切换),请确保应用程序在正确的GPU上启动。@BDL我的MacBook版本没有专用GPU,因此它是Intel Iris 5200 Pro。如果您使用像
glMatrixMode
?@Ripi2这样的旧函数,为什么需要核心配置文件?这只是一些工作代码,我想使用GL3中较新的函数。您的笔记本有哪个GPU?如果您有额外的AMD卡(带有自动GPU切换),请确保应用程序在正确的GPU上启动。@BDL我的MacBook版本没有专用GPU,因此它是Intel Iris 5200 Pro。如果使用像glMatrixMode
?@Ripi2这样的旧函数,为什么要使用核心配置文件?这只是一些工作代码,我想在GL3中使用较新的函数。