[solved] OpenGL: 3D Grafik einbinden (.mtl / .obj)
-
hellihjb schrieb:
das dateiformat parsen und die benoetigten daten in eigene strukturen uebertragen.
details.sorry. auf der webseite bin ich nicht wirklich zu einem beispiel was ich anwenden kann durchgedrungen. vielmehr habe ich versucht dass nate robin beispiel mit glut/glm zum laufen zu bringen.
dazu habe ich die dateien glm.c und glm.h in mein qt project aufgenommen und die folgende funktion in meine glwidget.cpp mit aufgenommenvoid drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/al.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); }folgende fhlerausgabe habe ich erhalten:
´pmodel´was not declaredWie trage ich pmodel in meine header datei ein !!?
-
erlaube die frage, kannst du ueberhaupt schon die grundlagen von c++? wenn mir hier nichts entgeht 'treagt' man das doch so ein wie bei jeder anderen membervariable auch.
falls du die grundlagen noch nicht kennst, schalte einen gang zurueck und arbeite ein paar c++ tutorials durch, sonst koennte es in frust ausarten und du hast am ende garkeinen spass dran.nicht boese gemeint

zum eintragen.
in privat bereich deiner klasse mit dem richtigen typen kannst du deine variable deklarieren
class CSonstwas { priavte: MeinDatentyp Variable; };zur not vor der klasse ein include zur typendeklaration, pass auch drauf auf ob's nicht zufaellig ein pointer ist

-
rapso schrieb:
erlaube die frage, kannst du ueberhaupt schon die grundlagen von
in privat bereich deiner klasse mit dem richtigen typen kannst du deine variable deklarieren
class CSonstwas { priavte: MeinDatentyp Variable; };zur not vor der klasse ein include zur typendeklaration, pass auch drauf auf ob's nicht zufaellig ein pointer ist

hehe..war wohl zu überfächig formuliert.
meine frage zielt auf den Datentyp, weil ich als Datentyp von -GLMmodel- ausgegangen bin, welches es aber nicht laufen lässt!
-
laut source:
GLMmodel* pmodel = NULL;was meinst du mit
welches es aber nicht laufen lässt
? compiliert nicht? linkt nicht? stuerzt ab? fehlermeldung?
-
rapso schrieb:
laut source:
GLMmodel* pmodel = NULL;dies führt zur fehlermeldung
´pmodel´was not declared in this scope
-
auf welche zeile bezieht sich der compilefehler?
sicher dass du die member in der richtigen klasse deklariert hast?[cpp]void CSonstwasKlasse::
drawmodel(void)[/cpp]
-
rapso schrieb:
auf welche zeile bezieht sich der compilefehler?
sicher dass du die member in der richtigen klasse deklariert hast?[cpp]void CSonstwasKlasse::
drawmodel(void)[/cpp]sicher bin ich mir nicht.
void GLWidget::drawmodel()voidder Fehler bezieht is auf
if (!pmodel) {und der gleiche fehler meldet sich auch zu
glmDraw(pmodel, GLM_SMOOTH | CLM_MATERIAL);deklariert ist es mit
GLMmodel* pmodel = NULL;in glwidget.h
-
mit
GLMmodel* pmodel;bleibt der Fehler aus sprich es lässt sich Deklarieren.
jetzt hat sich jedoch eine neue unbekannte fehlerquelle gemeldet welche je eine ´undefinied reference to`:
* glmReadOBJ
* glmUnitize
* glmFacetNormals
* glmVertexNormals
* glmDrawausspuckt. Wie löseich dieses Problem?
-
glm.c deinem projekt hinzufuegen?
-
hellihjb schrieb:
glm.c deinem projekt hinzufuegen?
ist drin

-
extern "C" { #include "glm.h" }
-
AndiLatte schrieb:
void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/al.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); }folgende fhlerausgabe habe ich erhalten:
´pmodel´was not declaredWie trage ich pmodel in meine header datei ein !!?
Die Fehlermeldung ist hier wohl eindeutig: 'pmodel' ist nicht deklariert.
Du ermittelst (if) ob 'pmodel' einen Wert (true, false, 0, 1, äpfel, birnen, bananen) hat, obwohl 'pmodel' eben an dem Punkt, wo du es zu ermitteln versuchst, gar nicht existiert. Ich gehe mal davon aus, das 'pmodel' keine globale Variable ist.
Lösung:
Entweder du definierst/deklarierst pmodel in der Funktion wo du es verwenden willst, in einem höheren Scope oder (lass es!) global.
Grüße... Heiko
-
hellihjb schrieb:
extern "C" { #include "glm.h" }den Kniff kannte ich noch nicht !! Danke für die Hilfe - es funktioniert
Hab grad ein paar Glückshormone ausschütten dürfen