Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi glBMP unaufindbar... (https://www.delphipraxis.net/9808-glbmp-unaufindbar.html)

logaan 4. Okt 2003 19:41


glBMP unaufindbar...
 
Hi leutz,

bin gerade dabei OpenGL zu lernen. Jetzt hab ich ein Problem beim texturieren von Objekten...
Mit der GLAUX.DLL klappt alles wunderbar... is bloß nen bisschen umständlich. Hab gelesen, dass
glBMP da besser is... nur leider is die Homepage von Jason Allen (http://delphigl.cfxweb.net) down...

Hat wohl wer noch die nötigen Dateien, oder weiß wo man sie noch downloaden kann?? Ich kann se einfach net finden...

THX

cya
logaan

Dagon 4. Okt 2003 20:27

Re: glBMP unaufindbar...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich will mal nett sein :-D !!!

logaan 4. Okt 2003 20:34

Re: glBMP unaufindbar...
 
Ah!! Geil!!

Vielen vielen Dank :corky:

cya
logaan

Dagon 4. Okt 2003 20:39

Re: glBMP unaufindbar...
 
Nichts zu danken! (Oder doch?) :wink:

logaan 4. Okt 2003 22:53

Re: glBMP unaufindbar...
 
Mist.. hilft mir leider nichts..
glBMP verwendet die OpenGL 1.2 Lib... und die
wiederum läuft nur mindestens auf Delphi 4...

Wo bekomm ich denn jetzt möglichst Kostengünstig ne gute
Delphi Version über 4 her?? (Delphi 7 Trial geht bei mir
irgendwie net...)

cya
logaan

Dagon 5. Okt 2003 09:33

Re: glBMP unaufindbar...
 
Sorry, da kann ich dir nicht weiter helfen. :(

Mr_T 5. Okt 2003 14:11

Re: glBMP unaufindbar...
 
glbmp verwendet opengl1.2 ? Das ist mir zwar neu, aber nagut:
Es gibt eine Althernative, Texturen zu laden... will man z.b. BMPs und JPEG's laden, dann kann man sich auch ne eigene Prozedur schreiben:


Delphi-Quellcode:
procedure loadtexture(var textur : integer; filename:string);
var
bitmap : tbitmap;
jpg : tjpegimage;

texdata : array[0..262143] of Trgbpoint;
r,g,b : byte;
x,y : integer;
tempint : integer;
xwidth, ywidth : integer;
begin

bitmap := tbitmap.create;

if (ExtractFileExt(filename) = '.jpg') or (ExtractFileExt(filename) = '.jpeg') then
begin
jpg := tjpegimage.Create;
jpg.LoadFromFile(filename);
jpg.CompressionQuality := 100;
 try
 bitmap.assign(jpg);
 finally
 jpg.free;
 end;
end
else
begin
 if ExtractFileExt(filename) = '.bmp' then
 begin
 bitmap.loadfromfile(filename);
 end;
end

xwidth := bitmap.Width;
ywidth := bitmap.Height;


for x := 0 to xwidth-1 do
begin
 for y := 0 to ywidth-1 do
 begin
 tempint := bitmap.canvas.pixels[x,y];
 r := TempInt and $FF;
 g := (TempInt shr 8) and $FF;
 b := (TempInt shr 16) and $FF;
 texdata[((ywidth-1)-y)*xwidth+x, 0] := r;
 texdata[((ywidth-1)-y)*xwidth+x, 1] := g;
 texdata[((ywidth-1)-y)*xwidth+x, 2] := b;
 end;
end;
 
  bitmap.free;

  glGenTextures(1, @textur);
  glBindTexture(GL_TEXTURE_2D, textur);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_linear);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_linear);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, xwidth, ywidth, 0, GL_RGB, GL_UNSIGNED_BYTE, @texdata);
 
end;
Diese Prozedur kann man denn so aufrufen:

Delphi-Quellcode:
loadtexture(tex,'Textur.jpg');
Dabei ist "tex" vom Typ gluint und alles andere verhällt sich genau so, als wenn man die glaux-lib verwendet...
allerdings könnten einige wichtige Prozeduren / Funktionen fehlen, weshalb man sich die extra aus der Opengl32.dll holen muss:
Delphi-Quellcode:
procedure glGenTextures(n: integer; textures: Pinteger); stdcall; EXTERNAL opengl32;
procedure glBindTexture(target: uint; texture: integer); stdcall; EXTERNAL opengl32;
procedure glTexParameteri(target, pname: uint; param: integer); stdcall; EXTERNAL opengl32;
procedure glTexImage2D(target: uint; level, internalformat: integer; width, height: integer; border: integer; format, atype: uint; Pixels:Pointer); stdcall; EXTERNAL opengl32;
(hoffe, es sind nicht zu viele Fehler im Beitrag ... alles auf die schnelle zusammengeschweißt...)

Ps: falls du immernoch eine günstige Delphi-Version > v3 suchst, denn bitte mich per E-Mail ganz freundlich drum, ob ich dir den Dl-Link für die Delphi 6 Personal (war mal gratis) ausgraben kann :-)

Edit: Jippie! Beitrag nummer 100 :dp: :dancer2: :dancer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz