Hi Leute,
ich glaube diese Woche krieg ich noch nen Koller.
Ich welchse jetzt schon das dritte mal wieder von DirectX zu OpenGL, weil ich immer wieder was finde was mit Delphi 3 net geht.
Hat man sich mit Mühe und Not einen läuffähigen DX8 header geschrieben und freud sich nen Keks, so zeichnet das blöde DirectX net. Die Scene ist da, sie ist schwarz, aber egal was ich mache sie bleibt schwarz. Kein dreickeck, nichts.
So nun bin ich wieder bei OpenGL und stehen vor dem nöchsten Nervenzusammenbruch.
MEIN DREIECK VERSCHINDET OHNE JEGLICHEN GRUND.
ich habe nach eurem Tutorial OpenGL Initialisiert, und gestartet.
habe mit ein Dreieck gebaut und wollte es zeichnen.
Wunderbar dachte ich mir: es hat dreiecken, ist rot und alles super.
Ich kanns nach rechts verschieben, nach links, nach oben, nach unten.
Da sag ich mir "verschiebst du es doch mal nach hinten".
und plop weg is es.
?????
hä?
also wieder nach vorne geholt und es ist wieder sichtbar.
So nun nehme ich einfach einen Scalierten Sinus. Der soll es mir immer von -2 über 0 nach +2 und wieder zurück nach 0 schieben, also hinten vorne hinten vorne.
Ob ihrs glaubt oder nicht, ab einem bestimmten Punkt ist es weg.
Was red ich eigentlich so viel, schaucht es euch einfach selber an.
OpenGL1.2 hab ich von
www.Koshigaya.de/Download/OpenGL.zip
aus eurem Tutorial
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: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Opengl12, ExtCtrls;
type Tmain = class(TForm) draw_timer: TTimer; procedure FormCreate(Sender: TObject); procedure InitGL; procedure DrawScene; procedure draw_timerTimer(Sender: TObject); private public end;
var main: Tmain;
implementation {$R *.DFM} var DC: hDC; hrc: HGLRC; pfd: TPIXELFORMATDESCRIPTOR; nPixelFormat: GLUint;
procedure Tmain.FormCreate(Sender: TObject); begin InitGL; hrc := wglCreateContext(DC); wglMakeCurrent(DC,hrc);
main.canvas.font.size := 12; main.canvas.font.color := clblack; main.canvas.font.name := 'Comic Sans MS'; end;
procedure Tmain.InitGL; begin InitOpenGL;
DC := GetDC(main.handle);
glClearColor(1,0,0,0);
glClearDepth(1);
glDepthFunc(GL_LESS);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glViewport(0,0,main.Width,main.Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(45,main.Width/main.Height,1,100);
glMatrixMode(GL_MODELVIEW);
pfd.nSize := sizeof(TPIXELFORMATDESCRIPTOR ); pfd.nVersion := 1; pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; pfd.iPixelType := PFD_TYPE_RGBA; pfd.cColorBits := 24; pfd.iLayerType := PFD_MAIN_PLANE; pfd.cDepthBits := 32;
nPixelFormat := ChoosePixelFormat(DC, @pfd); SetPixelFormat(DC,nPixelFormat,@pfd); end;
procedure Tmain.DrawScene; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glMAtrixMode(GL_MODELVIEW); glLoadIdentity;
gltranslate(0,0,sin(draw_timer.tag*pi/180)*2);
glBegin(GL_TRIANGLES); glColor3f(1,0,0); glVertex3f(0,0,0); glVertex3f(0,0.5,0); glVertex3f(0.5,0.5,0); glVertex3f(0.5,0,0); glEnd;
SwapBuffers(DC); end;
procedure Tmain.draw_timerTimer(Sender: TObject); begin main.DrawScene; draw_timer.tag := draw_timer.tag + 1; main.Canvas.TextOut(0,0,inttostr(draw_timer.tag)); end;
end. |