![]() |
OpenGL: Texturen
Hi!
Ich will eine Textur einbinden. Diese hab ich bereits mit folgendem Code geladen:
Delphi-Quellcode:
Klappt auch fehlerlos. Im DelphiGL-Tutorial kommt nun folgender Code:
texture1 := auxDIBImageLoadA('./texture/wall.bmp');
if not Assigned( texture1 ) then begin; MessageBox(0,'Texturenpfad oder Dateiname falsch!', 'Fehler beim Laden der Textur!',MB_OK or MB_ICONERROR); Halt; end;
Delphi-Quellcode:
Außerdem steht dort, dass Tex eine Variable vom Typ GLuInt sei. Wenn ich Tex jedoch nun als GLuInt deklariere, kommt der Fehler "Inkompatible Typen: PGLunt und Cardinal". Wenn ich Tex als PGLuint deklariere, kommt eine Speicherzugriffsverletzung. Wiß jemand, wie ich die Textur nun generieren kann? :?
glGenTextures(1, tex);
|
Re: OpenGL: Texturen
tex als GLuInt und dann @tex bei glGenTextures
|
Re: OpenGL: Texturen
Nun ja.
Ich würde dir freundlich raten, den ![]() ![]() Dann einfach die Units einbinden, und los geht es. Wie du mit glBitmap umgehen solltes, steht im Heared der Datei. EDIT:: So in etwa :
Delphi-Quellcode:
Ich hoffe, geholfen zu haben.
type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } myRc,myDc, Box : Cardinal; Texture : TglBitmap2D; public { Public declarations } procedure InitGl(); procedure DeInitGl(); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.InitGl(); begin InitOpenGL(); myDc := GetDC(Handle); myRc := CreateRenderingContext(myDc,[opDoubleBuffered],24,16,8,0,0,0); ActivateRenderingContext(myDc,myRc); glClearColor(0.3, 0.3, 0.3, 0.0); // Black Background glClearDepth(1.5); // Depth Buffer Setup glEnable(GL_DEPTH_TEST); glDepthFunc (GL_LEQUAL); glEnable(glTEXTURE_2D); // Enable Texture Mapping glBitmapSetDefaultFilter(GL_LINEAR,GL_LINEAR); // aus glBitmap.pas Texture := TglBitmap2D.Create('FileName.bmp oder tga oder jpg'); // Texture.AssignFromBitmap(temp); // Texture.BuildMipMaps := False; Texture.GenTexture(); end; procedure TForm1.DeInitGl(); begin Texture.Free; DeactivateRenderingContext(); ReleaseDC(Handle,myDc); end; procedure TForm1.FormCreate(Sender: TObject); begin InitGl(); end; procedure TForm1.FormDestroy(Sender: TObject); begin DeInitGl(); end; procedure TForm1.FormPaint(Sender: TObject); begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // TODO : Draw Hier //glLoadIdentity(); Texture.Bind(); // bie Bedarf // End Drawing SwapBuffers(myDc); end; procedure TForm1.FormResize(Sender: TObject); begin// if (Height=0) then Height := 1 ; glViewport(0, 0, Width, Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, Width / Height, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); FormPaint(Self); end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=27 then Close(); end; end. |
Re: OpenGL: Texturen
Zitat:
@brechi: Danke, jetzt kommt kein Fehler mehr :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz