Entwickler-Ecke

Multimedia / Grafik - Nix zu sehen...


Ice - Do 13.02.03 14:32
Titel: Nix zu sehen...
Mit folgendem Quelltext versuche ich ein Dreieck darzustellen :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OpenGL, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 //glClear (GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
 glLoadIdentity;
 glTranslatef(100,100,0);
 glTranslatef(0,0,100);
 glBegin(GL_TRIANGLES);
  glColor3f(1,0,0);
  glVertex3f(100,100, 0.0);
  glColor3f(0,1,0);
  glVertex3f( 0, 100, 0);
  glColor3f(0,0,1);
  glVertex3f( 100,100, 0.0);

 glEnd();


end;

aber ich sehe gar nix, ich glaube nicht das der Quellcode falsch ist da dieser aus einem Tutorial stammt. Habe ich vielleicht was vergessen oder übersehen??

vielen Dank im voraus

mfg
Ice

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


Raphael O. - Do 13.02.03 14:37

ich würd dir mal vorschlagen die Tutorials auf [url]http://www.delphigl.com[/url] anzuschauen...

dein Quelltext ist zwar ansich nicht falsch, aber man muss erst noch OpenGL initialisieren sagen, wohin es rendern soll...

So etwas auf einen Button zu legen macht außerdem auch keinen Sinn...

Wie gesagt schau mal auf die Page ;)

Fiji-Fighter


Ice - Do 13.02.03 15:39

:oops: Alles klar... Danke Schön!

mfg
Ice


Aya - Do 13.02.03 17:34

Also... KA, aber das was du da Zeichnest ist kein Dreieck... :)

Denk dir mal im Kopf ein 2D-Koordinaten System...
und verbinde da die punkte:
100, 100
0,100
100,100

Dann bekommst du ne Linie, kein Dreieck... :)

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
glBegin(GL_TRIANGLES); 
   glColor3f(1,0,0); 
   glVertex3f(100,0, 0.0); 
   glColor3f(0,1,0); 
   glVertex3f(50, 100, 0); 
   glColor3f(0,0,1); 
   glVertex3f(-100,0, 0.0); 
glEnd;


Das sollte schon eher funktionieren :)

Au'revoir,
Aya

PS: Du hast 2x glTranslatef gemacht.. kannst du auch in eins zusammenpacken:

Quelltext
1:
glTranslatef(100,100,100);                    


PPS: Du verschiebst deine Scene um 100 Einheitenin der Z-Richtung... Damit zeichnest du alles weit hinter dir = du kannst es sowieso nicht sehen... veränder das Z mal nur um ca. -3... so:

Quelltext
1:
glTranslatef(100,100,-3);                    


PPPS: Zeichnest du im Ortho oder Persp-Mode...?? Wenn du im PerspMode bist ist 100 wahrscheinlich viel zu groß... im OrthoMode isses ok.


Ice - Fr 14.02.03 08:57

Danke für die Hinweise. Keine Ahnung in welchem Mode ich mich befinde, habe auch erst angefangen mit OpenGL und keinen blassen Schimmer davon.... leider.

mfg
Ice


Ice - Fr 14.02.03 09:02

Ich sehe trotzdem immernoch nichts, wie funktioniert das denn mit der initialisierung? Gibt es da sowas wie eine Create Methode? :?:


Raphael O. - Fr 14.02.03 09:21

schau wie gesagt mal die tutorials auf [url]http://www.delphigl.com[/url] an...

das würde hier zulange dauern alles zu erklären...

die Seite ist wirklich cool ;)

Fiji-Fighter


Ice - Fr 14.02.03 13:12

Ich habe jetzt den Code so geändert:

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity;
glTranslatef(-1.5,0,-6);
glBegin(GL_TRIANGLES);
glVertex3f(-1.0,-1.0, 0.0);
glVertex3f( 0.0, 1.0, 0.0);
glVertex3f( 1.0,-1.0, 0.0);
glEnd();

und bekomme die Meldung Format %p nicht zulässig oder so, sicher weil OpenGL nicht initialisiert ist. Bitte sagt mir doch wie das funktioniert und bitte keine Verweise auf die OpenGL - Seite weil aus diesem Anfängertutorial ist nämlich dieses Beispiel.

mfg
Ice


Aya - Fr 14.02.03 14:46

Hi,

wenn du schon selber sagst das es nicht initilaisiert ist... wieso machst du es dann nicht? :)

[url]http://www.DelphiGL.com[/url] da das ERSTE Tutorial (Nicht wie dort steht das man das erste überspringen soll). Denn im ersten ist haargenau beschrieben wie die Initialisierung von OpenGL funktioniert.

Au'revoir,
Aya