gpt4 book ai didi

c++ - 在 Mac OS X 上使用 CGL 设置 OpenGL 上下文

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:14 30 4
gpt4 key购买 nike

我正在尝试在 Mac OS X 上设置 OpenGL 上下文而不使用 GLUT 或类似的东西。这是我目前所拥有的。

CGLPixelFormatAttribute pixelFormatAttributes[] = {
kCGLPFAOpenGLProfile, (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core,
kCGLPFAColorSize, (CGLPixelFormatAttribute) 24,
kCGLPFAAlphaSize, (CGLPixelFormatAttribute) 8,
kCGLPFAAccelerated,
kCGLPFAFullScreen,
kCGLPFADoubleBuffer,
kCGLPFASampleBuffers, (CGLPixelFormatAttribute) 1,
kCGLPFASamples, (CGLPixelFormatAttribute) 4,
(CGLPixelFormatAttribute) 0,
};

CGLPixelFormatObj pixelFormat;
GLint numberOfPixels;
CGLChoosePixelFormat(pixelFormatAttributes, &pixelFormat, &numberOfPixels);

CGLContextObj contextObject;
CGLCreateContext(pixelFormat, 0, &contextObject);
CGLDestroyPixelFormat(pixelFormat);
CGLSetCurrentContext(contextObject);


// OpenGL stuff here
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f);

glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 1.0f, 1.0f);
glBegin(GL_POLYGON);
glVertex3f(0.25f, 0.25f, 0.0f);
glVertex3f(0.75f, 0.25f, 0.0f);
glVertex3f(0.75f, 0.75f, 0.0f);
glVertex3f(0.25f, 0.75f, 0.0f);
glEnd();
glFlush();

CGLSetCurrentContext(NULL);
CGLDestroyContext(contextObject);

但这行不通,我是不是漏掉了什么?

最佳答案

您正在做您描述的事情 - 您创建了一个 OpenGL 上下文。您可能对什么是 OpenGL 上下文有错误的理解。它只是一个包含 OpenGL 实例的抽象实体。它不是用户可以直接看到的任何东西,例如包含 OpenGL 表面的窗口。

使用 OpenGL 无法创建用户界面元素,因为 OpenGL 不是用户界面库。当您说“不使用 GLUT 或类似的东西”时,您是在说您不想创建 OpenGL 上下文可以渲染到的可见表面。

要真正创建一个窗口——无论是普通窗口还是全屏窗口——你需要使用像 GLUT 或 GLFW 这样的用户界面库。由于您似乎正在构建仅限 OSX 的应用程序,因此您可能希望使用 AppKit/Cocoa,除非您对 ObjC 不满意。

关于c++ - 在 Mac OS X 上使用 CGL 设置 OpenGL 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11383510/

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