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

Aktuelle Zeit: Fr Jul 18, 2025 12:42

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Heightmap funktioniert nicht -_-
BeitragVerfasst: So Mär 26, 2006 21:46 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Ich bin hier am verzweifeln -_-
Nachdem dem Versuch die Heightmap wie im Tut zu rendern zum 10.000 mal schief gegangen ist (lässt sich nicht kompilieren, usw.) hab ich mal versucht das ganze wie in SoSs Newton Demo zu rendern. Das ganze kann ich zwar kompilieren, aber ich sehe nix.

Code:
  1. constructor THeightMap.Create(pHeightMapBitmap : String);
  2. const
  3.  Scale = 1;
  4. var
  5.  Bitmap : TBitmap;
  6.  x,y,i  : Integer;
  7.  VTmp   : array[0..3] of TVector3f;
  8.  MTmp   : TMatrix4f;
  9.  Min    : TVector3f;
  10.  Max    : TVector4f;
  11.  S0     : TVector3f;
  12.  S1     : TVector3f;
  13.  W,H    : Single;
  14. begin
  15. if not FileExists(pHeightMapBitmap) then
  16.  exit;
  17. Bitmap := TBitmap.Create;
  18. Bitmap.LoadFromFile(pHeightMapBitmap);
  19. SetLength(VA, Bitmap.Width*Bitmap.Height*4);
  20. SetLength(TC, Bitmap.Width*Bitmap.Height*4);
  21. W := Bitmap.Width/2;
  22. H := Bitmap.Height/2;
  23. i := 0;
  24. for y := 0 to Bitmap.Height-2 do
  25.  for x := 0 to Bitmap.Width-2 do
  26.   begin
  27.   // Vertices
  28.   VA[i+3]  := V3((x-W)*Scale,   Trunc(Bitmap.Canvas.Pixels[X+1,Y+1]/clWhite*255)*0.15-32, (y-H)*Scale);
  29.   VA[i+2]  := V3((x-W+1)*Scale, Trunc(Bitmap.Canvas.Pixels[X+2,Y+1]/clWhite*255)*0.15-32, (y-H)*Scale);
  30.   VA[i+1]  := V3((x-W+1)*Scale, Trunc(Bitmap.Canvas.Pixels[X+2,Y+2]/clWhite*255)*0.15-32, (y-H+1)*Scale);
  31.   VA[i  ]  := V3((x-W)*Scale,   Trunc(Bitmap.Canvas.Pixels[X+1,Y+2]/clWhite*255)*0.15-32, (y-H+1)*Scale);
  32.   // Texture coordinates
  33.   TC[i][0] := x/Bitmap.Width;
  34.   TC[i][1] := (y+1)/Bitmap.Height;
  35.  
  36.   TC[i+1][0] := (x+1)/Bitmap.Width;
  37.   TC[i+1][1] := (y+1)/Bitmap.Height;
  38.  
  39.   TC[i+2][0] := (x+1)/Bitmap.Width;
  40.   TC[i+2][1] := y/Bitmap.Height;
  41.  
  42.   TC[i+3][0] := x/Bitmap.Width;
  43.   TC[i+3][1] := y/Bitmap.Height;
  44.  
  45.   inc(i,4);
  46.   end;
  47. Bitmap.Free;
  48. end;
  49.  
  50. procedure THeightMap.Render;
  51. begin
  52. glDisable(GL_LIGHTING);
  53. glEnable(GL_TEXTURE_2D);
  54. glDisableClientState(GL_NORMAL_ARRAY);
  55. //glBindTexture(GL_TEXTURE_2D, TexID);
  56. glVertexPointer(3, GL_FLOAT, 0, @VA[0]);
  57. glTexCoordPointer(2, GL_FLOAT, 0, @TC[0]);
  58. glDrawArrays(GL_QUADS, 0, Length(VA));
  59. glEnableClientState(GL_NORMAL_ARRAY);
  60. glDisable(GL_TEXTURE_2D);
  61. glEnable(GL_LIGHTING);
  62. end;


-_- entweder mag mich delphi net, oder ich bin einfach nich für OGL geschaffen -_-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 27, 2006 14:35 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Bei schwarzem Bildschirm: Versuch mal, n bisschen rauszuzoomen und überprüf, ob du dann noch innerhalb deiner clipping-werte (zFar, zNear) bist.

Und wieso machst du da so viel rumgescale? :?

Code:
  1.  
  2. vertex = V3(x,getrvalue(Bitmap.Canvas.Pixels[x,z]) * factor,y);
  3.  


Sollte dicke reichen. Also verschalnk den Code ein bisschen und dann läufts vielleicht auch bald ;)

Anstatt glDrawArrays kompilier ich sowas übrigens gleich in ne Display-Liste... ich schau mal kurz, ich hab irgendwo noch ne komplette THeightmap-Implementation.

Hui... da hab ich ja grausamste Formatierung drin... Im Konstruktor muss wohl auch noch nachgebessert werden, da wird zur zeit aus ner ini geladen, das is bei dir evtl. anders.
Ich hab das jetzt auch nicht getestet... aber wenn dus mal mit deinem vergleichst, kommst du evtl. auf was.

die erwiterung pas ist hier verboten... babababa.... und das in nem delphi-forum, frechheit sowas.... ;)


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 28, 2006 11:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo LH_Freak,

Hast du in deinem Code auch die entsprechenen Vertex-Arrays aktiviert?

Ich sehe dort nämlich kein

Code:
  1. glEnableClientState(GL_VERTEX_ARRAY);


bzw.

Code:
  1. glEnableClientState(GL_TEXTURE_COORD_ARRAY);
.

Falls es immer noch nicht funktioniert, würde ich ersteinmal versuchen, die Heightmap ohne Vertex-Arrays darzustellen.

Oder du renderst ersteinmal etwas ganz einfaches, wie z.B. ein simples Quadrat.

Bist du dir eigentlich sicher, dass du auch in die richtige Richtung schaust?

Viele Grüße
dj3hut1

P.S. was vielleicht noch sein könnte : wurde bei dir die Bitmap überhaupt korrekt geladen? (einfach mal Bitmap.Height und Bitmap.Width ausgeben lassen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 28, 2006 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Ich glaub Delphi/OGL wollen mich wirklich verarschen. Gestern abend geht nix, heute, selber Code: GEHT!!!! Ich versteh die Welt nimmer -.-
Aber danke an alle!


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


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