Sorry, die frage ist vielleicht nicht so toll, aber ich bin wirklich am verzweifeln. Ich hab erst vor kurzem angefangen und auch so ein paar tutorials gelesen, aber meine Programm funktioniert einfach nicht. Kann mir vielleicht jamand sagen warum?
type
TForm1 = class(TForm)
procedure FormResize(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure InitOpenGL;
procedure SetupOpenGL;
procedure DrawObjects;
public
{ Public declarations }
end;
var
Form1: TForm1;
DC: HDC;
RC: HGLRC;
implementation
{$R *.dfm}
procedure TForm1.InitOpenGL;
var
PixelFormat : GLuint;
PFD : pixelformatdescriptor;
begin
DC := Canvas.Handle;
// SetPixelFormat
begin
with pfd do
begin
nSize:= SizeOf( PIXELFORMATDESCRIPTOR );
nVersion:= 1;
dwFlags:= PFD_DRAW_TO_WINDOW
or PFD_SUPPORT_OPENGL
or PFD_DOUBLEBUFFER;
iPixelType:= PFD_TYPE_RGBA;
cColorBits:= 24; //Farbtiefe
cRedBits:= 0;
cRedShift:= 0;
cGreenBits:= 0;
cBlueBits:= 0;
cBlueShift:= 0;
cAlphaBits:= 0;
cAlphaShift:= 0;
cAccumBits:= 0; //Accumulation Buffer
cAccumRedBits:= 0;
cAccumGreenBits:= 0;
cAccumBlueBits:= 0;
cAccumAlphaBits:= 0;
cDepthBits:= 16; //Z-Buffer Tiefe
cStencilBits:= 0; //Stencil Buffer
cAuxBuffers:= 0;
iLayerType:= PFD_MAIN_PLANE;
bReserved:= 0;
dwLayerMask:= 0;
dwVisibleMask:= 0;
dwDamageMask:= 0
end;
//Pixel Format setzten
PixelFormat := ChoosePixelFormat(DC, @pfd);
if (PixelFormat=0) then
showmessage('Es konnte kein passendes PixelFormat gefunden werden.');
if (not SetPixelFormat(DC,PixelFormat,@pfd)) then
showmessage('PixelFormat konnte nicht gesetzt werden.');
end;
//Redering Context initalisieren
RC := wglCreateContext(DC);
if (RC=0) then
begin
Showmessage('Rendering Context kann nicht erstellt werden.');
Halt(100)
end;
if (not wglMakeCurrent(DC, RC)) then
begin
showmessage('Rendering Context kann nicht aktiviert werden.');
Halt(100)
end;
end;
procedure TForm1.SetupOpenGL;
begin
glShadeModel(GL_SMOOTH); // Aktiviert weiches Shading
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glClearColor(0,0,0,1); // Bildschirm löschen (schwarz)
glClearDepth(1.0); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Aktiviert Depth Testing
glDepthFunc(GL_LEQUAL); // Bestimmt den Typ des Depth Testing
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
// Qualitativ bessere Koordinaten Interpolation
end;
procedure TForm1.FormResize(Sender: TObject);
begin
glViewport(0, 0, ClientWidth, ClientHeight);
//Projektionsmatrix resetten
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Perspektivische Darstellung
gluPerspective(45.0,ClientWidth/ClientHeight,1.0,100.0);// Calculate The Aspect Ratio Of The Window
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
InitOpenGL;
SetupOpenGL;
DrawObjects;
if GLGetError <> GL_NO_ERROR then
showmessage('Fehler!');
SwapBuffers(DC);
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Zitat:
Ist aber auch egal, hauptsache es funktioiert.
Genau meine Meinung 8)
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Dafür haben wir Templates, die schon ziemlich schlank sind. Dein Fehler zeugt IMAO übrigens auf einer OpenGL12 initalisierung ohne Init ... mehr dazu im FAQ
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Mitglieder in diesem Forum: 0 Mitglieder und 26 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.