En utilisant OpenGL ES des fonctions sur un Mac
Je suis en train de dessiner opengl dans un espace 2d, et suis en train de faire la suite, cependant il l'habitude de compiler:
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();
J'ai inclus l'OpenGL.cadre de cadre de, Le compilateur trace est dit ce qui suit.
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
Je suis à court d'idées sur la façon de le résoudre. Ma cible est actuellement une application de bureau, mais je cherche à faire une application iphone par la suite.
- Comment avez-vous d'inclure cadre? Voici un exemple de youtube.com/watch?v=3FdVLJT12d4
Vous devez vous connecter pour publier un commentaire.
Avez-vous inclus les en-têtes appropriés?
Sur le Mac, ce sont
et, éventuellement,
Sur l'iPhone, ils sont
Aussi, si je ne me trompe pas, glOrthof() est OpenGL-ES-spécifique. Vous pouvez avoir besoin d'utiliser glOrtho() sur le Mac.
glOrthof
n'implique pas que c'était un OpenGL-ES chose, j'ai supposé que c'était la même pour les deux.Vous ne comprennent pas les cadres. Vous comprennent (ou à l'importation) des en-têtes et le lien à l'encontre de cadres. Par ailleurs, que l'avertissement de sortie vient de le compilateur; après tout il s'agit de l'éditeur de liens (
ld
).Le compilateur et l'éditeur de liens ne sont pas à se plaindre qu'aucun autre de ces fonctions n'existent pas, alors votre problème est tout simplement que cette fonction n'existe pas. Parce qu'il n'existe pas, il n'est pas déclarée dans l'en-tête (d'où le message d'avertissement du compilateur) ou exportés par le cadre (d'où l'erreur de l'éditeur de liens).
assurez-vous que vous êtes en utilisant l'OpenGL cadre du SDK de l'iPhone, pas de votre fait (Mac OS X) Système de dossier. Ils sont différents, et je sais que mon Mac OS X OpenGL.le cadre n'a pas unglOrthof
fonction. Supprimer l'OpenGL cadre que vous avez dans votre projet dès maintenant, et ajouter l'iPhone OpenGL cadre à l'aide de la “Ajouter les Cadres Existants de la commande” qui s'affiche lorsque vous cliquez droit sur un groupe dans votre projet Xcode.Alors vous allez avoir besoin de trouver un remplacement pour que
glOrthof
fonction, car il n'existe pas sur Mac. (Merci à Brad Larson pour pointer cette partie de la question.)Vous suffit d'utiliser glOrtho sur la vanille GL. GL ES prend en charge fixe et flottante de point de types de données, d'où le glOrthox et glOrthof fonctions.