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

Aktuelle Zeit: Mi Jul 16, 2025 20:27

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Okt 28, 2006 17:29 
Offline
DGL Member

Registriert: Mi Okt 04, 2006 16:03
Beiträge: 5
Hallo,
mein Problem ist folgendes, ich versuche eine Textur zu laden und bei mehreren Quads zu nutzen (Schleife), jedoch bekomme ich keine Textur zu gesicht, sondern nur die Quads.
Wo liegt der Fehler?
Danke im Vorraus Lurnon.

Quelltext:

Code:
  1. unit Grafik;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, dglOpengl, StdCtrls, SDL, SDL_image;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ListBox1: TListBox;
  12.     procedure FormCreate(Sender: TObject);
  13.     procedure IdleHandler(Sender: TObject; var Done: Boolean);
  14.     procedure FormDestroy(Sender: TObject);
  15.     procedure FormResize(Sender: TObject);
  16.     procedure Render;
  17.     procedure LoadTexture;
  18.   private
  19.     { Private-Deklarationen }
  20.   public
  21.     { Public-Deklarationen }
  22.   end;
  23.  
  24. var
  25.   Form1: TForm1;
  26.   DC                                : HDC;  //Handle auf Zeichenfläche
  27.   RC                                : HGLRC;//Rendering Context
  28.   texture : gluInt;
  29.  
  30. implementation
  31.  
  32. {$R *.dfm}
  33.  
  34. procedure TForm1.FormCreate(Sender: TObject);
  35.   begin
  36.     DC:=GetDC(Handle);
  37.     RC:=CreateRenderingContext(DC,                   //Device Context
  38.                                [opDoubleBuffered],   //Optionen
  39.                                32,                   //ColorBits
  40.                                24,                   //ZBits
  41.                                 0,                   //StencilBits
  42.                                 0,                   //AccumBits
  43.                                 0,                   //AuxBuffers
  44.                                 0);                  //Layer
  45.     ActivateRenderingContext(DC, RC);
  46.     glViewport(10, 50, 960, 640); //Renderbildfläche=Formgröße
  47.     Application.OnIdle:= IdleHandler;
  48.     glClearColor(0,0,0,255);  //Legt die Renderfarbe fest
  49.     glMatrixMode(GL_PROJECTION);
  50.     glLoadIdentity;
  51.     gluPerspective(178.2, 960/640, 0.1, 500); //letzte Zahl bestimmt Sehweite
  52.     glMatrixMode(GL_MODELVIEW);
  53.     glTranslatef(0, 0,-5);
  54.     LoadTexture;
  55.   end;
  56.  
  57. procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
  58.    begin
  59.       render;
  60.       //done:=false; //endlos Schleife
  61.    end;
  62.  
  63. procedure TForm1.FormDestroy(Sender: TObject);
  64.   begin
  65.     DeactivateRenderingContext;
  66.     DestroyRenderingContext(RC);
  67.     ReleaseDC(Handle, DC);
  68.   end;
  69.  
  70. procedure TForm1.FormResize(Sender: TObject);
  71.   begin
  72.     glClearColor(0,0,0,255);  //Legt die Renderfarbe fest
  73.     glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farbbuffer und Tiefenpuffer entleeren
  74.     glMatrixMode(GL_PROJECTION);
  75.     glLoadIdentity;
  76.     gluPerspective(1, ClientWidth/ClientHeight, 0.1, 500); //letzte Zahl bestimmt Sehweite
  77.     glMatrixMode(GL_MODELVIEW);
  78.   end;
  79.  
  80. procedure TForm1.LoadTexture;
  81. var
  82.   tex : PSDL_Surface;
  83. begin
  84.   tex := IMG_Load('C:\Dokumente und Einstellungen\Stefan\Desktop\3d\Gras.jpg');
  85.   if assigned(tex) then
  86.   begin
  87.     glGenTextures(1, @texture);
  88.     glBindTexture(GL_TEXTURE_2D, texture);
  89.  
  90.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  91.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  92.    
  93.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  94.  
  95.     SDL_FreeSurface(tex);
  96.   end;
  97. end;
  98.  
  99. procedure TForm1.Render;
  100.  var x,y:integer;
  101.   begin
  102.     glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farbbuffer und Tiefenpuffer entleeren  hier damit die Graphik wenn sie kleiner wird net hinter der größeren verschwindet;
  103.     x:=0;
  104.     y:=0;
  105.     repeat
  106.       inc(x);
  107.       repeat
  108.         inc(y);
  109.         glBindTexture(GL_TEXTURE_2D,texture);
  110.         glBegin(GL_quads);
  111.           glTexCoord2f(0,1);glVertex3f(-480-32+x*32,320+32-y*32,0);//ol
  112.           glTexCoord2f(0,0);glVertex3f(-480-32+x*32,320-y*32,0);   //ul
  113.           glTexCoord2f(1,0);glVertex3f(-480+x*32,320-y*32,0);          //ur
  114.           glTexCoord2f(1,1);glVertex3f(-480+x*32,320+32-y*32,0);    //or
  115.           glEnd;
  116.       until y=20;
  117.       y:=0;
  118.     until x=30;
  119.     SwapBuffers(DC);
  120.   end;
  121.  
  122. end.


// edit Lossy: Pascaltags hinzugefügt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 28, 2006 19:06 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi

in deiner LoadTexture lädst du die Textur "tex", und gibst sie auch gleich wieder frei. Also was soll da dann angezeigt werden ?
Iss doch alles weg !

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 28, 2006 23:13 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
n abend :)

@ uweq : das mit dem freigeben hat schon seine richtigkeit, das sind nur die daten im arbeitsspeicher, die texturdaten sind zu dem zeitpunkt schon im grafikkartenspeicher.

@ Lurnon: ich kann in deinem code kein
Code:
  1. glEnable(GL_TEXTURE_2D);
entdecken ;) .
benutz bitte auch (zumindest in zukunft) pascal-tags für deinen code, den kann man sonst so schlecht lesen....

Joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 28, 2006 23:41 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
@aNTichRisT,

Ja , jetzt seh ich das auch, wo Du es sagst. :roll:
Macht doch einen enormen Unterschied, mit und ohne Pascal-Tags zu schreiben.

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 10:02 
Offline
DGL Member

Registriert: Mi Okt 04, 2006 16:03
Beiträge: 5
Danke erstmal.
Ja die Zeile muss verschollen gegangen sein. Jetzt funktionierts.
Und etnschuldigung wegen den Pascal-Tag hab den irgendwie übersehen, bzw. nicht festgestellt das es sowas gibt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 30, 2006 19:10 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich hab dazu im Wiki mal was angelegt: Die "Checklisten"

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]