gpt4 book ai didi

objective-c - cocoa 和OpenGL : failed to draw cube

转载 作者:行者123 更新时间:2023-12-03 17:41:13 26 4
gpt4 key购买 nike

我正在制作一个简单的应用程序,我应该在其中绘制一个带有 GLUT 的立方体。
由于我已经使用纯 C 研究了 OpenGL,因此我很难理解应该调用哪些函数来初始化上下文,因为我不必再调用 glutInit 等函数。
所以我对 NSOpenGLView 进行了子类化,禁用了窗口的一次性内存并编写了以下代码:

@implementation MyView

- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSOpenGLContext* context=[self openGLContext];
[context makeCurrentContext];
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, -100, 0, 0, 0, 0, 1, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 1000);
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_DEPTH_TEST);
}
return self;
}

- (void)drawRect:(NSRect)dirtyRect
{
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColor4f(1, 0, 0, 0);
glutSolidCube(10);

glFlush();
}

但似乎我错过了一些东西,因为我看到了黑色 View ,但没有看到立方体。

最佳答案

您需要将initWithFrame中的代码移至prepareGL。例如

- (void)prepareOpenGL {
NSOpenGLContext *context = [self openGLContext];
[context makeCurrentContext];
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, -100, 0, 0, 0, 0, 1, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 1000);
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_DEPTH_TEST);
}

关于objective-c - cocoa 和OpenGL : failed to draw cube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675528/

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