AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi OpenGL Einsteiger Frage
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL Einsteiger Frage

Ein Thema von ferby · begonnen am 23. Nov 2006 · letzter Beitrag vom 28. Nov 2006
 
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

OpenGL Einsteiger Frage

  Alt 23. Nov 2006, 03:39
Hallo,

Ich bin gerade dabei OpenGL zu lernen, und zu verstehen.

Heute habe ich damit angefangen und habe ein Problem.

Ich lasse ein viereck um die y-Achse rotieren:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows,Forms,dglOpenGL, ExtCtrls, Classes;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Render;
    procedure Timer1Timer(Sender: TObject);
 end;

var
  Form1: TForm1;
    DC : HDC; //Handle auf Zeichenfläche
    RC : HGLRC;//Rendering Context

    test: extended;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Erstellen
  DC:= GetDC(Handle);
  RC:= CreateRenderingContext( DC,[opDoubleBuffered],32,24,0,0,0,0);
  ActivateRenderingContext(DC, RC);
  glClearColor(0.3, 0.4, 0.7, 0.0); // Hintegrund
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Vernichten
  DeactivateRenderingContext;
  DestroyRenderingContext(RC);
  ReleaseDC(Handle, DC);
end;

// Render = Zeichnen
procedure TForm1.Render;
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(100, ClientWidth/ClientHeight, 1, 1000);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  glTranslatef(0, 0, -10);

  glRotatef(test,0,1,0);

  glBegin(GL_QUADS);
    glColor3f(0, 0, 0); glVertex3f(-5, -9, 1);
    glColor3f(0, 0, 1); glVertex3f(9, -9, 1);
    glColor3f(0, 0, 1); glVertex3f(9, 6, 1);
    glColor3f(0, 0, 1); glVertex3f(-5, 6, 1);
  glEnd;

  SwapBuffers(DC);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Render;
  test:=test+4;
end;

end.
Im Anhang die Exe mit dem Viereck das Rotiert.

Was ich jetzt nicht verstehe:
Warum verschwindet das Viereck für eine kurze Zeit?
Ich müsste es doch die ganze Zeit sehen...
Ich habe schon ein Blatt papier vor mir Rotieren lassen um es mir vor zustellen,
aber ich kapier es nicht.
Es müsste doch nur einen MOment nicht zu sehen sein, bei genau 90°...

Kann mir wer das Erklären, so das ich mir das Räumlich vorstellen kann?

Oder vielleicht bin ich auch schon zu müde...... gähn
Angehängte Dateien
Dateityp: exe project1_979.exe (563,0 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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