première question sur le site, donc je suis désolé si je fais quelque chose d'inhabituel. J'ai décidé de poster une quantité minimale de mon code actuel et plutôt des liens vers les didacticiels que j'ai suivis parce que je publierais une bonne quantité de fichiers. Pour ceux qui supportent avec moi, vous n'avez aucune idée de combien je l'apprécie.Objectif C++ OpenGL implémentation
Je développe actuellement un moteur multi-plateforme en C++ pour le rendu graphique, plus un projet amusant qu'une nécessité. Ma plate-forme de développement principale est mon Macbook Pro, j'ai donc décidé que la première partie du moteur que je voudrais mettre en œuvre est le port Mac. Parce que je veux que l'application se comporte comme une application native, j'ai décidé que je voulais utiliser Cocoa pour le frontal.
J'ai suivi this tutorial et cela a bien fonctionné avec la démo qui l'accompagne, ainsi qu'avec le premier tutoriel sur le site Web de lazyfoo. J'ai fait des tutoriels il y a plus d'un an, mais je voulais vérifier et m'assurer de savoir comment mettre en œuvre ce que j'ai appris il y a quelques temps.
Ce n'est que lorsque j'ai eu the second tutorial que j'ai eu des problèmes. Donc, en éditant la classe tut01_renderer, j'ai jusqu'ici ajouté une variable, la variable entière gColorMode utilisée par lazyfoo dans son tutoriel pour la comparaison dans sa méthode de rendu. J'ai tenté d'initialiser gColorMode à 0 (cyan) dans l'en-tête, la méthode init de tut01renderer, ou les deux. Enfin, dans la la méthode render tut01renderer, je mets un if/else:
if(gColorMode == 0)
{
//Solid Cyan
glBegin(GL_QUADS);
glColor3f(0.f, 1.f, 1.f);
glVertex2f(-0.5f, -0.5f);
glVertex2f( 0.5f, -0.5f);
glVertex2f( 0.5f, 0.5f);
glVertex2f(-0.5f, 0.5f);
glEnd();
}
else
{
//RYGB Mix
glBegin(GL_QUADS);
glColor3f(1.f, 0.f, 0.f); glVertex2f(-0.5f, -0.5f);
glColor3f(1.f, 1.f, 0.f); glVertex2f( 0.5f, -0.5f);
glColor3f(0.f, 1.f, 0.f); glVertex2f( 0.5f, 0.5f);
glColor3f(0.f, 0.f, 1.f); glVertex2f(-0.5f, 0.5f);
glEnd();
}
Cela entraîne trois scénarios quand je lance, et peu importe la façon dont je l'initialisés gColorMode, chacun des 3 arrive.
1) Il se bloque à l'une des erreurs malloc, à la modification d'une objection libérée OU à une erreur d'accès incorrect dans l'assemblage. 2) Montre le carré cyan comme il se doit 3) Affiche le multi-carré!
J'ai même fait de gColorMode une constante et il montre parfois encore le multi-carré ou les plantages! Donc, ma question est de savoir si je fais quelque chose de mal ou de non-connu. Suis-je autorisé à avoir une instruction if/else dans la méthode render? La démo de code squelettique originale utilisait des variables, mais pas des instructions if/else? Y at-il quelque chose à propos de Objective C++ qui rend ce que j'essaye de faire impossible? Ou est autre chose?
(Enfin, je serai heureux de réimplémentez cela est dans la plaine C et objectif C si quelqu'un connaît un tutoriel assez bon. Évident mon moteur est en C++, mais il pourrait être plus facile d'ensemble pour aller avec cette approche.)
Je suggère de quitter rapidement l'ancienne fonctionnalité OpenGL obsolète que vous utilisez (appelée "pipeline à fonction fixe") et de lire cet excellent tutoriel sur la programmation OpenGL moderne: http://www.arcsynthesis.org/gltut/ –
Je ne vois rien de mal dans votre approche, cela devrait fonctionner. Si vous voulez, ça ne me dérange pas de jeter un coup d'œil à votre projet. Cependant, comme Victor Sand a dit qu'il est recommandé de passer de l'ancien style OpenGL. Je trouve le tutoriel d'arcsynthesis un peu déroutant d'un point de vue mac. http://www.reddit.com/r/opengl sidebar sur la droite a quelques excellents tutoriels et vous pouvez les vérifier. – TheAmateurProgrammer
Il devait y avoir quelque chose de mal avec l'en-tête parce que j'étais capable de refaire le programme dans un fichier de projet entièrement nouveau et cela a fonctionné. Typiquement, je reçois ces erreurs aléatoires lorsque j'ai des erreurs d'en-tête. Je ne peux toujours pas trouver l'erreur en question, mais heureusement j'ai un programme de travail. Merci à tous pour l'aide! (Travaillant définitivement à l'apprentissage de GLSL) – TheLostDays