Я пытаюсь вовлечь 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 в конечном счете.
Вы включили соответствующие заголовки?
На 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.
Вы бы просто использовали glOrtho на ванильном GL. GL ES поддерживает типы данных с фиксированной и плавающей точками, отсюда и функции glOrthox и glOrthof.
.] [] [] Я включил фреймворк OpenGL.framework...[
] [
] Ты не включаешь фреймворки. Вы включаете (или импортируете) заголовки и ссылки на фреймворки. Соответственно, только предупреждение в выводе поступает от компилятора, всё после него - от компоновщика ([]ld[
]).[
] Компилятор и компоновщик не жалуется на то, что других таких функций не существует, так что ваша проблема в том, что этой функции просто не существует. Так как она не существует, она не объявляется в заголовке (отсюда и предупреждение компилятора) и не экспортируется фреймворком (отсюда и ошибка компоновщика)[
]. [] [] Убедитесь, что используете фреймворк OpenGL из SDK для iPhone, а не из Вашей системной папки (Mac OS X). Они разные, и я знаю, что мой Mac OS X OpenGL.framework не имеет функции [][] glOrthof[
]. Удалите фреймворк OpenGL, который есть в вашем проекте сейчас, и добавьте фреймворк OpenGL для iPhone, используя команду "Add Existing Frameworks", которая появляется при щелчке правой кнопкой мыши на группе в вашем Xcode проекте.[
] [] [] Моей целью в настоящее время является настольное приложение, ... [
] [
] Тогда вам нужно будет найти замену этой функции [] glOrthof[
], потому что она не существует на Mac. (Спасибо Брэду Ларсону, что указал на эту часть вопроса.)[