D'accord. J'ai donc voulu utiliser un fichier écrit en c en C++. J'ai couru le code en c et n'ai absolument aucun problème.Problème concernant OpenGL et le processus de conversion de C en C++
Comme je ne sais pas c, j'ai travaillé avec un logiciel de conversion pendant un certain temps, mais il n'a pas été efficace (devinant le format de codage n'a pas été dans le style dont il avait besoin). J'ai décidé de l'essayer moi-même et il me semblait que tout ce que je devais faire était de changer quelques déclarations de malloc en de nouvelles déclarations et de remplacer gratuitement par delete. J'ai donc lancé le programme et il semble que la plupart des fonctions fonctionnent bien, mais celle-ci me pose problème.
Quand je suis en train de mettre à jour l'affichage d'une nouvelle image (je lis les données d'image TIFF et l'afficher sur l'écran), je rencontre des problèmes dans ces déclarations particulières:
glutReshapeWindow(ImageWidth,ImageLength);
glClear(GL_COLOR_BUFFER_BIT);//these
glRasterPos2i(0, 0);//three
glDrawPixels(ImageWidth, ImageLength, GL_RGB,
GL_UNSIGNED_BYTE, ImageData);//statements are the ones giving me the error
I inclus la première déclaration dans le codeblock pour montrer qu'il ne fait exploser immédiatement aucune sorte d'appel OpenGl.
Je continue à obtenir des erreurs le long des lignes de
Cannot access memory at address 0xfbad248c
Cannot access memory at address 0xfbad248c
Cannot access memory at address 0xaabbeeaa
Je sais que cela pourrait être une sorte de vague, mais ce pourrait être des sources communes de cette erreur? Cela a fonctionné en c, qu'est-ce qui a pu causer cette erreur dans le passage rapide en C++?
Merci et laissez-moi savoir si vous avez besoin de plus d'informations.
D'accord, donc je ne suis pas vraiment en utilisant la bibliothèque standard OpenGL je crois (ce qui est pour une classe et on m'a donné les fichiers de la bibliothèque par un instructeur). J'ai le code
#include <GL/glut.h>
en tant que #include. Ces bibliothèques sont exactement les mêmes que celles trouvées dans le fichier c car je les ai simplement copiées et collées dans mon projet C++. (J'ai aussi travaillé avec eux de manière limitée dans un autre projet C++). Juste au cas où, j'ai vérifié mon système de fichiers pour les fichiers "OPENGL32.DLL" et "GLU32.DLL" et ne les ai pas trouvés.
Je devrais probablement inclure ces détails supplémentaires:
Une méthode init() est appelée au début du programme avant que la boucle d'entrée réelle est appelée:
void
init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
Cette méthode semble fonctionner très bien (un motif en damier simple est créé peu de temps après cet appel de fonction). Je ne suis pas sûr de quel type de fichiers OpenGL ils appartiennent ("OPENGL32.DLL" ou "GLU32.DLL") mais j'espère que cela peut réduire le problème un peu. En ce qui concerne la ligne ImageData, je ne crois pas que l'objet ImageData soit corrompu ou quelque chose du genre, à cause de certaines des raisons dont vous parliez et le fait que le code dans le tout premier bloc de code que j'ai posté (la source d'erreurs) est dans un autre bloc en tant que tel:
if (ImageData == NULL) {/*code*/}
else{/*this is where the error code is*/}
Je peux poster des infos sur les makefiles si vous pensez qu'il serait utile (juste ne veulent pas encombrer ce fil avec l'étoffe si elle est ne pas).
J'ai répondu avec une modification. – Chad
"mauvais nombre d'octets" C'est exactement ça. Assez embarrassant. J'apprécie énormément l'aide; J'aurais couru dans les cercles pour Dieu sait combien de temps à travers les erreurs archivées OpenGL. – Chad