Используя OpenGL ES функционирует на Mac

Я пытаюсь вовлечь opengl в 2-е пространство и делаю следующее, однако это компиляция привычки:

    int vPort[4];
    glGetIntegerv(GL_VIEWPORT, vPort);

    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();

    glOrthof(0, vPort[2], 0, vPort[3], -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();

Я включал платформу OpenGL.framework, трассировка компилятора говорит следующее.

In function '-[OpenGLView drawRect:]':
    warning: implicit declaration of function 'glOrthof'

Ld build/Debug/OpenGLTest1.app/Contents/MacOS/OpenGLTest1 normal x86_64
/Developer/usr/bin/gcc-4.2 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -        L/Users/user/Documents/cocoa/OpenGLTest1/build/Debug -F/Users/user/Documents/cocoa/OpenGLTest1/build/Debug -filelist /Users/user/Documents/cocoa/OpenGLTest1/build/OpenGLTest1.build/Debug/OpenGLTest1.build/Objects-normal/x86_64/OpenGLTest1.LinkFileList -mmacosx-version-min=10.6 -framework Cocoa -framework OpenGL -o /Users/user/Documents/cocoa/OpenGLTest1/build/Debug/OpenGLTest1.app/Contents/MacOS/OpenGLTest1

Undefined symbols:
  "_glOrthof", referenced from:
      -[OpenGLView drawRect:] in OpenGLView.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

У меня закончились идеи о том, как зафиксировать его. Моя цель в настоящее время является настольным приложением, но я стремлюсь делать приложение для iPhone в конечном счете.

6
задан Peter Hosey 4 January 2010 в 15:27
поделиться

3 ответа

Вы включили соответствующие заголовки?

На Mac это

#import <OpenGL/OpenGL.h>

и возможно

#import <GLUT/GLUT.h>

На iPhone это

#import <OpenGLES/EAGL.h>
#import <OpenGLES/EAGLDrawable.h>
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>

Также, если я не ошибаюсь, glOrthof() специфичен для OpenGL-ES. Возможно, вам понадобится использовать glOrtho() на Mac.

6
ответ дан 10 December 2019 в 00:39
поделиться

Вы бы просто использовали glOrtho на ванильном GL. GL ES поддерживает типы данных с фиксированной и плавающей точками, отсюда и функции glOrthox и glOrthof.

.
2
ответ дан 10 December 2019 в 00:39
поделиться
[
] [

] Я включил фреймворк OpenGL.framework...[

] [
] [

] Ты не включаешь фреймворки. Вы включаете (или импортируете) заголовки и ссылки на фреймворки. Соответственно, только предупреждение в выводе поступает от компилятора, всё после него - от компоновщика ([]ld[]).[

]. [

] Компилятор и компоновщик не жалуется на то, что других таких функций не существует, так что ваша проблема в том, что этой функции просто не существует. Так как она не существует, она не объявляется в заголовке (отсюда и предупреждение компилятора) и не экспортируется фреймворком (отсюда и ошибка компоновщика)[

]. [

] [] Убедитесь, что используете фреймворк OpenGL из SDK для iPhone, а не из Вашей системной папки (Mac OS X). Они разные, и я знаю, что мой Mac OS X OpenGL.framework не имеет функции [] glOrthof[]. Удалите фреймворк OpenGL, который есть в вашем проекте сейчас, и добавьте фреймворк OpenGL для iPhone, используя команду "Add Existing Frameworks", которая появляется при щелчке правой кнопкой мыши на группе в вашем Xcode проекте.[][

]. [
] [

] Моей целью в настоящее время является настольное приложение, ... [

] [
] [

] Тогда вам нужно будет найти замену этой функции [] glOrthof[], потому что она не существует на Mac. (Спасибо Брэду Ларсону, что указал на эту часть вопроса.)[

]
2
ответ дан 10 December 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: