Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 03, 2025 13:46

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Textur wird nicht angezeigt
BeitragVerfasst: Di Jan 07, 2003 13:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Ich stehe gerade voll auf dem Schlauch: Warum wird die Textur nicht angezeigt? (ist zwar FreePascal, aber die Befehle dürften sich hier decken, habe nicht mit Dynamiscen Variablen herumgefuhrwerkt, ...)

ups, beinahe hätte ich vergessen den Quelltext hinzuzufügen: Biteeschän:

Code:
  1.  
  2.  
  3. {ASMMODE intel}
  4.  
  5. {$MODE OBJFPC}
  6.  
  7. program
  8.  
  9.    GlutLektion3FreePascal;
  10.  
  11. uses
  12.  
  13.    glut,     //für Openglfenster
  14.  
  15.    gl,       //OpenGL Unit (gl.... Befehle)
  16.  
  17.    glu,      //GL Utilities (glu... Befehle);
  18.  
  19.    glaux; //Dateihandlingbefehle
  20.  
  21. var
  22.  
  23.    tex : GLuint;
  24.  
  25.   
  26.  
  27. procedure DrawGL; cdecl;
  28.  
  29. begin
  30.  
  31.    glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  32.  
  33.    glLoadIdentity;
  34.  
  35.    glTranslatef(0,0,-5);
  36.  
  37.    glBindTexture(GL_TEXTURE_2D, tex);
  38.  
  39.    glBegin(GL_QUADS);
  40.  
  41.       glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  42.  
  43.       glTexCoord2f(0,1); glVertex3f(-1,1,0);
  44.  
  45.       glTexCoord2f(1,1); glVertex3f(1,1,0);
  46.  
  47.       glTexCoord2f(1,0); glVertex3f(1,-1,0);
  48.  
  49.    glEnd;
  50.  
  51.  
  52.  
  53.    GlutSwapBuffers;
  54.  
  55. end;
  56.  
  57. procedure Tasten(key : byte; x,y : integer);
  58.  
  59.  
  60.  
  61. begin
  62.  
  63.    x:=x+y;
  64.  
  65.    case char(key) of
  66.  
  67.       'f','F': glutFullscreen;
  68.  
  69.       'Q','q': halt;
  70.  
  71.    end;
  72.  
  73.    writeln(key);
  74.  
  75. end;
  76.  
  77. {------------------------------------------------------------------}
  78.  
  79. {  Initialisierung von OpenGL                                      }
  80.  
  81. {------------------------------------------------------------------}
  82.  
  83. procedure InitGL; cdecl;
  84.  
  85. begin
  86.  
  87.   glEnable(GL_TEXTURE_2D);        // Aktiviert Texture Mapping
  88.  
  89.   glShadeModel(GL_SMOOTH);        // Aktiviert weiches Shading
  90.  
  91.   glClearColor(0.0, 0.0, 0.0, 0.5);    // Bildschirm löschen (schwarz)
  92.  
  93.   glClearDepth(1.0);         // Depth Buffer Setup
  94.  
  95.   glEnable(GL_DEPTH_TEST);        // Aktiviert Depth Testing
  96.  
  97.   glDepthFunc(GL_LEQUAL);        // Bestimmt den Typ des Depth Testing
  98.  
  99.   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  100.  
  101.                                          // Qualitativ bessere Koordinaten Interpolation
  102.  
  103. end;
  104.  
  105.  
  106.  
  107.  
  108.  
  109. {------------------------------------------------------------------}
  110.  
  111. {  Behandelt Größenveränderung des Fensters                        }
  112.  
  113. {------------------------------------------------------------------}
  114.  
  115. procedure ResizeWndgl(Width, Height : Integer); cdecl;
  116.  
  117. begin
  118.  
  119.   if (Height = 0) then Height := 1;
  120.  
  121.   glViewport(0, 0, Width, Height);    // Setzt den Viewport für das OpenGL Fenster
  122.  
  123.   glMatrixMode(GL_PROJECTION);        // Matrix Mode auf Projection setzen
  124.  
  125.   glLoadIdentity();                   // Reset View
  126.  
  127.   gluPerspective(45.0, GLfloat(Width)/Height, 1.0, 100.0);  // Perspektive den neuen Maßen anpassen.
  128.  
  129.   glMatrixMode(GL_MODELVIEW);         // Zurück zur Modelview Matrix
  130.  
  131.   glLoadIdentity();                   // Reset View
  132.  
  133. end;
  134.  
  135.  
  136.  
  137. var
  138.  
  139.    texture1 : PTAUX_RGBImageRec;
  140.  
  141. begin  
  142.  
  143.    texture1 := auxDIBImageLoadA('wall.bmp');
  144.  
  145.    if not Assigned(texture1) then
  146.  
  147.       begin;
  148.  
  149.       writeln('Texturenpfad oder Dateiname falsch! Fehler beim Laden der Textur!');
  150.  
  151.       Halt;
  152.  
  153.       end;
  154.  
  155.   
  156.  
  157.    glGenTextures(1,@tex);
  158.  
  159.    glBindTexture(GL_TEXTURE_2D,tex);
  160.  
  161.    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  162.  
  163.    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  164.  
  165.    glTexImage2D(GL_TEXTURE_2D,0,3,texture1^.sizeX,texture1^.sizey,0,GL_RGBA,GL_UNSIGNED_BYTE,texture1^.data);
  166.  
  167.   
  168.  
  169.    writeln('Vollbild mit F, beenden mit Q');
  170.  
  171.    GlutInit(@argc,@argv);
  172.  
  173.    glutInitWindowSize(400,400);
  174.  
  175.    glutInitWindowPosition(100,100);
  176.  
  177.    glutInitDisplayMode(GLUT_RGB or GLUT_DOUBLE or GLUT_DEPTH);
  178.  
  179.    glutCreateWindow('OpenGL via Glut mit FreePascal.');
  180.  
  181.    glutReshapeFunc(@ResizeWndgl);
  182.  
  183.    glutDisplayFunc(@DrawGL);
  184.  
  185.    glutIdleFunc(@DrawGL); //Wird aufgerufen, wenn gerade kein Ereignis anfällt.
  186.  
  187.    glutKeyboardFunc(@Tasten);
  188.  
  189.    InitGl;
  190.  
  191.    GlutMainLoop;
  192.  
  193. end.
  194.  
  195.  

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 07, 2003 15:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Also unter Delphi meckert hier der compiler:
Code:
  1.  glGenTextures(1,@tex);

versuch mal:
Code:
  1.  glGenTextures(1,tex);

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 07, 2003 15:57 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Zitat:
Also unter Delphi meckert hier der compiler:
Code:
  1.  glGenTextures(1,@tex);

versuch mal:
Code:
  1.  glGenTextures(1,tex);

Das ist nicht das Problem, denn Pascals "var" Variablen sind im Normalfall pointer, es kommt hier also nur auf die Unit, an, inder das deklariert ist.

oh, sory flow, ich glaub ich hab gegen das gebot des arbeitsfreien tages verstossen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 07, 2003 19:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
FreePascal meckert, wenn ich das ganze nicht als Pointer übergebe.

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 19:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Leute helft mir *fleh*

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 19:19 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Es kann auch interessant sein, was in den Header drinne steht und somit erwartet wird. In diesem Fall erwartet der Headere einen Pointer, ergo so wie Du es hattest müßte es richtig sein, da kommts Problem nciht her :-/

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 19:56 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
findet sich ein glEnable(GL_TEXTURE_2D) im Code? ich hab keins entdeckt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 20:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
findet sich ein glEnable(GL_TEXTURE_2D) im Code? ich hab keins entdeckt


Doch...und zwar hier :
Code:
  1.  
  2.  
  3. {------------------------------------------------------------------}
  4.  
  5. {  Initialisierung von OpenGL                                      }
  6.  
  7. {------------------------------------------------------------------}
  8.  
  9. procedure InitGL; cdecl;
  10.  
  11. begin
  12.  
  13.  &nbsp;glEnable(GL_TEXTURE_2D); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// <------------ HIER
  14.  
  15.  &nbsp;glShadeModel(GL_SMOOTH); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Aktiviert weiches Shading
  16.  
  17.  &nbsp;glClearColor(0.0, 0.0, 0.0, 0.5); &nbsp; &nbsp;// Bildschirm löschen (schwarz)
  18.  
  19.  &nbsp;glClearDepth(1.0); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Depth Buffer Setup
  20.  
  21.  &nbsp;glEnable(GL_DEPTH_TEST); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Aktiviert Depth Testing
  22.  
  23.  &nbsp;glDepthFunc(GL_LEQUAL); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Bestimmt den Typ des Depth Testing
  24.  
  25.  &nbsp;glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  26.  
  27.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Qualitativ bessere Koordinaten Interpolation
  28.  
  29. end;
  30.  
  31.  

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 08, 2003 20:36 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
aber ich hab den fehler jetzt glaub doch gefunden, als ich das ding in delphi nachbauen wollte:
er läd die textur, noch bevor ein RC besteht und übergibt sie an OpenGl - schlechte Idee, denn dann kann er sie später nicht verwenden -> Textur einfach nach InitGl und vor GlutMainLoop laden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 09, 2003 07:50 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Jetzt gehts, danke

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.017s | 16 Queries | GZIP : On ]