1

GLUTなどを使用せずにMacOSXでOpenGLコンテキストを設定しようとしています。これは私がこれまでに持っているものです。

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);

しかし、これは機能しません、私はここで何かが欠けていますか?

4

2 に答える 2

1

あなたはあなたが説明することをしている-あなたはOpenGLコンテキストを作成する。OpenGLコンテキストが何であるかについて間違った理解をしている可能性があります。これは、OpenGLインスタンスを含む単なる抽象エンティティです。OpenGLサーフェスを含むウィンドウのように、ユーザーに直接表示されるものではありません。

OpenGLはユーザーインターフェイスライブラリではないため、OpenGLではユーザーインターフェイス要素を作成できません。「GLUTなどを使用せずに」と言うときは、OpenGLコンテキストがレンダリングできる可視サーフェスを作成したくないということです。

通常のウィンドウでもフルスクリーンでも、実際にウィンドウを作成するには、GLUTやGLFWなどのユーザーインターフェイスライブラリを使用する必要があります。OSXのみのアプリケーションを構築しているように見えるので、ObjCに慣れていない場合を除いて、AppKit/Cocoaを使用することをお勧めします。

于 2012-07-09T08:30:38.303 に答える
0

CGLSetFullScreenOnDisplay()「ウィンドウを開く」ために使用する必要があるようです。

于 2017-03-02T09:51:09.920 に答える