Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 14:18

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: wie krieg ich das flackern weg?
BeitragVerfasst: Mo Dez 05, 2005 22:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 21, 2005 17:11
Beiträge: 10
Wohnort: Siegburg
ja hallo erst mal....
ich bin hier n ganz neuer und lerne Delphi an der schule.
für die Facharbeit brauche ich dgl und lerne das nun.

ich hab n programm geschrieben das sich um alle Achsen drehen und wenden lässt. aber das ganze flackert ...
ich hab n guten rechner und das flackern dürfte doch garnicht sein oder?
wie krieg ich das weg???
helft mir bitte! :cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 05, 2005 22:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Flackern hat nichts mit der Leistung eines Rechners zu tun.
Im Gegenteil.
Wenn dein Bildschirm z.b. 75 mal die Sekunde erneuert wird, du aber 300 Bilder die Sekunde erzeugst, kann es zu flackern kommen, wenn "gerade beim zeichnen" der Inhalt des GraKa-Rams geleert wird.
Abhilfe schafft hierbei Wait Retrace.
Ich weiß leider nurnicht, wie das unter Windows/OpenGL/SDL heißt und wie man ex nun genau realisiert.

Was nutzt du?
WinAPI, Glut, SDL?

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 01:05 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Und wie sieht dein Code aus ?

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 08:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Cyberputer: Dieses Phänomen welches du meinst tritt normal aber nur bei Single Buffer Kontexten auf. Aus genau einem solchen Grund wurde Doublebuffering erfunden. Da wird in den nicht sichtbaren Buffer gezeichnet und wenn dieser fertig ist werden sie getauscht und der dann auf dem Monitor dargestellt. Das kann auch genau zu einem Zeitpunkt passieren an dem der Monitor sein Bild neu aufbaut. Das führt dann dazu, dass du schon einen Teil des "neuen" Bildes siehst wärend der Rest noch zu dem "alten" Bild gehört. Das sieht man unter umständen auch ist aber normal nicht so gravierend.

Den Begriff den du suchst ist Vertikal Sync oder kurz V-Sync.

Axalus: Ich denke mal, dass bei dir das Problem existiert, dass du ohne Doublebuffering arbeitest. Genau sagen könnten wir das aber nur mit ein bisschen Code von dir. Aber tu dir keinen Zwang an und schau schon mal selber ob du nicht das Problem findest.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 13:14 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Je nachdem was du machst könnte es auch noch Z-Fighting sein. Aber dazu müsste man deinen Code sehn. Wenn du eine schlechte Tiefenpufferauflösung hast wäre das möglich...

PS: Ein Programm in alle Möglichen Richtungen zu rotieren...wie hast du das geschafft? 3D-Speicher? ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 21, 2005 17:11
Beiträge: 10
Wohnort: Siegburg
:!: Warnung :!:
ist mein erster code
hab da mal alles zusammen gewürfelt was ich finden konnte
und hab das mal ausprobiert
also wird da ziemlicher Blödsinn stehen
ich denke ich hab irgendwo was vom doublebuffer stehen...

achja
ich wollte da n objekt namens tatom machen aber da wird wieder n zugriffsfehler angezeigt.
*verzweifel*
wie geht das wieder weg?
und hier das chaos: :twisted:
Code:
  1.  
  2. procedure gluwiresphere(obj:GLUQuadricOBJ;x,y,z,r:double;sl,st:integer;cr,cg,cb,ca:single);
  3.     procedure Button13Click(Sender: TObject);
  4.     procedure Button14Click(Sender: TObject);
  5.     private
  6.     hrc: HGLRC;
  7.     procedure DrawScene;
  8.  
  9.  procedure SetDCPixelFormat(Handle: HDC);
  10.    
  11.  
  12.  
  13.     { Private-Deklarationen }
  14.   public
  15.     { Public-Deklarationen }
  16. ////////////////////////////////////////////////////////////
  17. //tatom
  18. end;
  19. TAtom=class (tobject)
  20.  
  21.    Name:string;
  22.    x:double;
  23.    y:double;
  24.    z:double;
  25.    r:double;
  26.    ElectronCount:integer;
  27.    vElectroncount:integer;
  28.    NeutronCount:integer;
  29.    ProtonCount:integer;
  30.    obj:gluquadricobj;
  31.    color:array[1..4]of single;
  32.    hyllen:array[1..2]of integer;
  33.    vectors:array[1..6]of double;//zwei vectoren ; um eine exakte darstellung im Raum zu ermöglichen
  34.    constructor create(x,y,z,r:double;vectors:array of double);
  35.    private
  36.  
  37.  
  38.  
  39. ///////////////////////////////////////////////////////////
  40.   end;
  41. const
  42.  
  43. Ambient : array[0..3] of GLFloat = (0.3, 0.3, 0.3, 1);
  44.  
  45. Diffuse : array[0..3] of GLFloat = (0.7, 0.7, 0.7, 1);
  46.  
  47. Specular : array[0..3] of GLFloat = (0.2, 0.2, 0.2, 1);
  48.  
  49. Position : array[0..3] of GLFloat = (0.0, 0.2, 1.0, 1);
  50.  
  51. Direction: array[0..2] of GLFloat = (0.0 ,0.0, -1.0);
  52.  
  53.  
  54. var
  55.    Form1: TForm1;
  56.    Obj1,obj2: GLUQuadricOBJ; FDC:HDC;  
  57.    atome:array[1..1000]of tatom;
  58.    i,angle,mdown:integer;
  59.  
  60.     vx,vy,vz,lx,ly,lz,ax,ay,az, wmx,wmy,mx,my,mxa,mya,xx,yy,zz,rx,ry,rz,gradAnimiert:single;
  61.  
  62.     state,repetition:integer;
  63.  
  64.  
  65.  
  66.  
  67.  
  68. implementation
  69.  
  70. {$R *.DFM}
  71. ///////////////////////////////////////////////////////////////////
  72. //atom deklaration
  73. constructor TAtom.create(x,y,z,r:double;vectors:array of double);
  74. begin
  75.      inherited create;
  76.      form1.gluwiresphere(obj,x,y,z,r,16,16,1,0,1,1);
  77. end;
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84. //////////////////////////////////////////////////////////////////
  85.  
  86. procedure TForm1.gluwiresphere(obj:GLUQuadricOBJ;x,y,z,r:double;sl,st:integer;cr,cg,cb,ca:single);
  87.      var i,ii,t,v,m:integer; grad,grad2,rep:single;
  88. begin
  89.      rep:=0;
  90.      randomize;
  91.  
  92.  
  93.      rep:=random(1345)+1 div 100;
  94.  
  95.      glBlendFunc(GL_ONE, GL_SRC_ALPHA);
  96.  
  97.      grad:=(360/sl);
  98.      grad2:=(360/st);
  99.  
  100.      glcolor4f(1,1,0,0.9);
  101.  
  102.      gltranslatef(x,y,z);
  103.      ii:=1;
  104.      i:=1;
  105.      v:=0;
  106.      m:=0;
  107.      r:=r-(r/100*2);
  108.  
  109.      for t:=1 to st do
  110.      begin
  111.          m:=m+1; glrotatef(grad2*m+rep,1,0,0);
  112.  
  113.          while ii=1 do begin
  114.          v:=v+1;
  115.          glbegin(gl_lines);
  116.  
  117.          glcolor4f(cr,cg,cb,ca+0.1);
  118.          glvertex3f(r*cos(grad*i),r*sin(grad*i),0);
  119.          glvertex3f(r*cos(grad*i+1),r*sin(grad*i+1),0);
  120.  
  121.          {glvertex3f(0,r*sin(grad*i),r*cos(grad2*i));
  122.          glvertex3f(0,r*sin(grad*i+1),r*cos(grad2*i+1));}
  123.  
  124.          {glvertex3f(r*sin(grad*i),0,r*cos(grad2*i));
  125.          glvertex3f(r*sin(grad*i+1),0,r*cos(grad2*i+1));}
  126.          glend();
  127.           i:=i+2;
  128.           if i>sl then
  129.           begin
  130.                   ii:=0;
  131.  
  132.           end;
  133.      end;
  134.           i:=0;
  135.           ii:=1;
  136.           glrotatef(-grad2*m-rep,1,0,0);
  137.           glrotatef(grad2*m+rep,0,1,0);
  138.           while ii=1 do
  139.           begin
  140.                   v:=v+1;
  141.                   glbegin(gl_lines);
  142.  
  143.  
  144.                   {glvertex3f(r*cos(grad*i),r*sin(grad*i),0);
  145.                   glvertex3f(r*cos(grad*i+1),r*sin(grad*i+1),0);}
  146.  
  147.                   glvertex3f(0,r*sin(grad*i),r*cos(grad2*i));
  148.                   glvertex3f(0,r*sin(grad*i+1),r*cos(grad2*i+1));
  149.  
  150.                  {glvertex3f(r*sin(grad*i),0,r*cos(grad2*i));
  151.                  glvertex3f(r*sin(grad*i+1),0,r*cos(grad2*i+1));}
  152.                  glend();
  153.                   i:=i+2;
  154.                   if i>sl then
  155.                   begin
  156.                           ii:=0;
  157.  
  158.                   end;
  159.         end;
  160.         i:=0;
  161.         ii:=1;
  162.         glrotatef(-grad2*m-rep,0,1,0);
  163.         glrotatef(grad2*m+rep,0,0,1);
  164.         while ii=1 do begin
  165.                 v:=v+1;
  166.                 glbegin(gl_lines);
  167.  
  168.                 {glcolor4f(1,1,0.1,0.9);
  169.                 glvertex3f(r*cos(grad*i),r*sin(grad*i),0);
  170.                 glvertex3f(r*cos(grad*i+1),r*sin(grad*i+1),0);
  171.  
  172.                 glvertex3f(0,r*sin(grad*i),r*cos(grad2*i));
  173.                 glvertex3f(0,r*sin(grad*i+1),r*cos(grad2*i+1)); }
  174.  
  175.                 glvertex3f(r*sin(grad*i),0,r*cos(grad2*i));
  176.                 glvertex3f(r*sin(grad*i+1),0,r*cos(grad2*i+1));
  177.                 glend();
  178.                 i:=i+2;
  179.                 if i>sl then
  180.                 begin
  181.                           ii:=0;
  182.  
  183.                 end;
  184.         end;
  185.    i:=0;
  186.   ii:=1;
  187.   glrotatef(-grad2*m-rep,0,0,1);
  188.  end;
  189.  
  190.  
  191.  
  192.  
  193.   glcolor4f(cr/2,cg/2,cb/2,0.99999);
  194.  
  195.   glusphere(obj,r,sl,st);
  196.  glflush();
  197. gltranslatef(-x,-y,-z);
  198.  glCallList(66);
  199.  
  200.  
  201.  
  202.  end;
  203.  
  204.  
  205.  
  206. procedure TForm1.SetDCPixelFormat(Handle: HDC);
  207.  
  208. var
  209.  
  210. pfd: TPixelFormatDescriptor;
  211.  
  212. nPixelFormat: Integer;
  213.  
  214. begin
  215.  
  216. {Feld wird mit 0-en gefüllt}
  217.  
  218. FillChar(pfd, SizeOf(pfd), 0);
  219.  
  220. with pfd do
  221.  
  222. begin
  223.  
  224. nSize := sizeof(pfd);
  225.  
  226. nVersion := 1;
  227.  
  228. dwFlags := PFD_DRAW_TO_WINDOW or
  229.  
  230. PFD_SUPPORT_OPENGL;
  231.  
  232. iPixelType:= PFD_TYPE_RGBA;
  233.  
  234. cColorBits:= 24;
  235.  
  236. cDepthBits:= 64;
  237.  
  238. iLayerType:= PFD_MAIN_PLANE;
  239.  
  240. end;
  241.  
  242. nPixelFormat := ChoosePixelFormat(Handle, @pfd);
  243.  
  244. SetPixelFormat(Handle, nPixelFormat, @pfd);
  245.  
  246. end;
  247.  
  248.  
  249.  
  250. procedure TForm1.FormCreate(Sender: TObject);
  251. begin
  252. repetition:=0;
  253.  
  254.  
  255. gradanimiert:=0;
  256.  
  257. vx:=0;
  258. vy:=0;
  259. vz:=0;
  260. lx:=0;
  261. ly:=0;
  262. lz:=0;
  263. ax:=0;
  264. ay:=0;
  265. az:=0;
  266.  
  267. mx:=0;
  268. my:=0;
  269. wmx:=0;
  270. wmy:=0;
  271. mxa:=0;
  272. mya:=0;
  273. mdown:=0;
  274. angle:=0;
  275. xx:=0;
  276. yy:=0;
  277. zz:=0;
  278. rx:=0;
  279. ry:=0;
  280. rz:=0;
  281. state:=0;
  282. i:=0;
  283. SetDCPixelFormat(Canvas.Handle);
  284.  glEnable(GL_DEPTH_TEST) ;
  285.  glenable(gl_blend);
  286.  gluPerspective(30.0, width/height, 0.0, 10.0);
  287.  
  288.  
  289.  glBlendFunc(GL_ONE, GL_SRC_ALPHA);
  290. hrc := wglCreateContext(Canvas.Handle);
  291. Obj1:= gluNewQuadric;
  292. obj2:= gluNewQuadric;
  293.      glEnable(GL_LIGHTING);
  294.  
  295. glEnable(GL_LIGHT0);
  296.  
  297.  
  298. glLightfv(GL_LIGHT0, GL_AMBIENT, @Ambient);
  299.  
  300. glLightfv(GL_LIGHT0, GL_DIFFUSE, @Diffuse);
  301.  
  302. glLightfv(GL_LIGHT0, GL_SPECULAR, @Specular);
  303.  
  304.   glLightModelf (GL_LIGHT_MODEL_LOCAL_VIEWER, 1.0);
  305.  
  306.  
  307.  
  308.  
  309. end;
  310. procedure TForm1.FormPaint(Sender: TObject);
  311. begin
  312. i:=i+1;
  313. wmx:=mx-mxa;
  314. wmy:=my-mya;
  315. mxa:=mx;
  316. mya:=my;
  317. wglMakeCurrent(Canvas.Handle, hrc);
  318. repetition:=repetition+1;
  319. DrawScene;
  320.  
  321.  
  322. wglMakeCurrent(0, 0);
  323.  
  324.  
  325. end;
  326. procedure TForm1.DrawScene;
  327. var base:integer; nix:array[1..6]of double;
  328. begin
  329.  
  330.  
  331. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  332. if i=1 then
  333. {gluLookAt(vx,vy,vz,lx,ly,lz,ax,ay,az);}
  334. base:=0;
  335. glEnable(GL_DEPTH_TEST) ;
  336.  glenable(gl_blend);
  337.   if i=2 then begin
  338.   {koordinatenkreuz}
  339.    glnewlist(1,gl_compile);
  340.    //
  341.  
  342.    FDC:=CreateCompatibleDC(0);
  343.  
  344. SelectObject(FDC,Font.Handle);
  345.  
  346. Base:=glGenLists(255);
  347.  
  348. wglUseFontOutLines(FDC,0,255,base,0,0.1,WGL_FONT_POLYGONS,nil);
  349.  
  350.  
  351.    //
  352.  
  353. gluwiresphere(obj1,1,0,0,0.1,16,16,0,0,1,0.99);
  354. gluwiresphere(obj1,0,1,0,0.1,16,16,0,1,1,0.99);
  355. gluwiresphere(obj1,0,0,-1,0.1,16,16,0,1,0,0.99);
  356.    glEnable(GL_DEPTH_TEST) ;
  357.  glenable(gl_blend);
  358. glbegin(gl_lines);
  359.  glcolor4f(0.5,0.5,0,1);
  360.  glCallList(66);
  361.  
  362.  
  363.    glvertex3f(1,0,0);
  364.    glcolor4f(1,1,0,1);
  365.   glvertex3f(0,0,0);
  366.  
  367.   glcolor4f(1,1,0,1);
  368.   glvertex3f(0,1,0);
  369.   glcolor4f(0.5,0.5,1,1);
  370.   glvertex3f(0,0,0);
  371.  
  372.  
  373.  
  374.   glcolor4f(1,1,0,1);
  375.   glvertex3f(0,0,-1);
  376.   glcolor4f(0,1,1,1);
  377.   glvertex3f(0,0,0);
  378.  
  379.  
  380.  glcolor4f(1,1,1,1);
  381.  
  382.  glend();
  383.  
  384.  
  385.    glendlist;
  386. end;
  387. glcalllist(1);
  388. glBlendFunc(GL_ONE, GL_SRC_ALPHA);
  389. gltranslatef(xx,yy,zz);
  390.  glRotatef(angle,rx,ry,rz);
  391.  {ab hier einfügen}////////////////////////////////////////////////////////////
  392.  
  393.  
  394.  
  395.  
  396.    glnewlist(300,gl_compile);
  397.  
  398.    {gluwiresphere(obj1,0,1.3,0,0.25,16,16,1,0.3,0,9);
  399.    gluwiresphere(obj2,-0.15,1.5,0,0.1,16,16,0,0,1,0.9);
  400.    gluwiresphere(obj1,0.15,1.5,0,0.1,16,16,0,0,1,0.9);}
  401.  
  402.    glendlist;
  403.  
  404.    glcalllist(300);
  405.  
  406.     atome[1]:=tatom.create(1,1,1,0.3,nix);
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414. glFlush();
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423. end;
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432. procedure TForm1.FormResize(Sender: TObject);
  433.  
  434. var
  435.  
  436. gldAspect: Single;
  437.  
  438. begin
  439.  
  440. wglMakeCurrent(canvas.handle, hrc);
  441.  
  442. gldAspect := Width / Height;
  443.  
  444. {Projektions-, nicht ModellMatrix}
  445.  
  446. glMatrixMode(GL_PROJECTION);
  447.  
  448. glLoadIdentity;
  449.  
  450. {Perspektive oder Parallel}
  451.  
  452.  
  453.  
  454. gluPerspective(30.0, gldAspect, 1.0, 100.0) ;
  455.  
  456.  
  457.  
  458. {Den Sichtbereich bzw. die Größe der Zeichenfläche}
  459.  
  460. glviewport(0,0,width,height);
  461.  
  462. glTranslatef(0.5,0.5,-5);
  463.  
  464. wglMakeCurrent(0,0);
  465.  
  466. end;
  467.  
  468.  
  469. //menu sichtbar/ unsichtbar
  470. procedure TForm1.Button1Click(Sender: TObject);
  471. begin
  472. if state>=2 then state:=0;
  473. if state=0 then
  474. begin
  475. button2.visible:=true;
  476. button3.visible:=true;
  477. button4.visible:=true;
  478. button5.visible:=true;
  479. button6.visible:=true;
  480. button7.visible:=true;
  481. button8.visible:=true;
  482. button9.visible:=true;
  483. button10.visible:=true;
  484. button11.visible:=true;
  485. button12.visible:=true;
  486. end;
  487. if state=1 then
  488. begin
  489. button2.visible:=false;
  490. button3.visible:=false;
  491. button4.visible:=false;
  492. button5.visible:=false;
  493. button6.visible:=false;
  494. button7.visible:=false;
  495. button8.visible:=false;
  496. button9.visible:=false;
  497. button10.visible:=false;
  498. button11.visible:=false;
  499. button12.visible:=false;
  500. end;
  501. state:=state+1;
  502.  
  503. end;
  504. //hier die Bewegung über die Tastatur
  505. procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
  506.   Shift: TShiftState; X, Y: Integer);
  507. begin
  508. zz:=0.2;
  509. end;
  510.  
  511. procedure TForm1.Button3MouseDown(Sender: TObject; Button: TMouseButton;
  512.   Shift: TShiftState; X, Y: Integer);
  513. begin
  514. zz:=-0.2;
  515. end;
  516.  
  517. procedure TForm1.Button5MouseDown(Sender: TObject; Button: TMouseButton;
  518.   Shift: TShiftState; X, Y: Integer);
  519. begin
  520. xx:=0.2;
  521. end;
  522.  
  523. procedure TForm1.Button4MouseDown(Sender: TObject; Button: TMouseButton;
  524.   Shift: TShiftState; X, Y: Integer);
  525. begin
  526. xx:=-0.2;
  527. end;
  528.  
  529. procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
  530.   Shift: TShiftState; X, Y: Integer);
  531. begin
  532. zz:=0;
  533. end;
  534.  
  535. procedure TForm1.Button4MouseUp(Sender: TObject; Button: TMouseButton;
  536.   Shift: TShiftState; X, Y: Integer);
  537. begin
  538. xx:=0;
  539. end;
  540.  
  541. procedure TForm1.Button6MouseDown(Sender: TObject; Button: TMouseButton;
  542.   Shift: TShiftState; X, Y: Integer);
  543. begin
  544. angle:=5;
  545. rz:=0.2;
  546. end;
  547.  
  548. procedure TForm1.Button9MouseDown(Sender: TObject; Button: TMouseButton;
  549.   Shift: TShiftState; X, Y: Integer);
  550. begin
  551. angle:=5;
  552. rx:=0.2;
  553. end;
  554.  
  555. procedure TForm1.Button7MouseDown(Sender: TObject; Button: TMouseButton;
  556.   Shift: TShiftState; X, Y: Integer);
  557. begin
  558. angle:=5;
  559. rz:=-0.2;
  560. end;
  561.  
  562. procedure TForm1.Button8MouseDown(Sender: TObject; Button: TMouseButton;
  563.   Shift: TShiftState; X, Y: Integer);
  564. begin
  565. angle:=5;
  566. rx:=-0.2;
  567. end;
  568.  
  569. procedure TForm1.Button6MouseUp(Sender: TObject; Button: TMouseButton;
  570.   Shift: TShiftState; X, Y: Integer);
  571. begin
  572. angle:=0;
  573. rz:=0;
  574. end;
  575.  
  576. procedure TForm1.Button8MouseUp(Sender: TObject; Button: TMouseButton;
  577.   Shift: TShiftState; X, Y: Integer);
  578. begin
  579. angle:=0;
  580. rx:=0;
  581. end;
  582. //hier die bewegung durch Tasten
  583. procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  584.   Shift: TShiftState);
  585. begin
  586. edit1.text:=inttostr(key);
  587. if key=87 then
  588. zz:=0.2;
  589. if key=83 then
  590. zz:=-0.2;
  591. if key=68 then
  592. xx:=-0.2;
  593. if key=65 then
  594. xx:=0.2;
  595. if key=69 then
  596.  yy:=-0.2;
  597. if key=88 then
  598.  yy:=0.2;
  599.  
  600.  
  601. {if key=80 then
  602. rx:=0.2;
  603. if key=192 then
  604. rx:=-0.2;
  605. if key=76 then
  606. ry:=0.2;
  607. if key=222 then
  608. ry:=-0.2;
  609. if key=79 then
  610. rz:=0.2;
  611. if key=76 then
  612. rz:=-0.2;}
  613.  
  614. end;
  615.  
  616. procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  617.   Shift: TShiftState);
  618. begin
  619. xx:=0;
  620. zz:=0;
  621. yy:=0;
  622. rx:=0;
  623. ry:=0;
  624. rz:=0;
  625. angle:=0;
  626. end;
  627.  
  628. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
  629. begin
  630.  
  631. if key='w' then
  632. zz:=0.2;
  633. if key='s' then
  634. zz:=-0.2;
  635. if key='a' then
  636. xx:=0.2;
  637. if key='d' then
  638. xx:=-0.2;
  639.  
  640.  
  641. if key='p' then begin
  642. rx:=0.2;  angle:=5;      end;
  643. if key='ö' then begin
  644. rx:=-0.2; angle:=5;       end;
  645. if key='l' then begin
  646. ry:=0.2;  angle:=5;      end;
  647. if key='ä' then begin
  648. ry:=-0.2; angle:=5;      end;
  649. if key='o' then begin
  650. rz:=0.2;  angle:=5;      end;
  651. if key='.' then begin
  652. rz:=-0.2; angle:=5;      end;
  653. end;
  654.  
  655. procedure TForm1.Edit2Change(Sender: TObject);
  656. begin
  657. edit2.text:='';
  658. end;
  659.  
  660. procedure TForm1.Button10Click(Sender: TObject);
  661. begin
  662. i:=0;
  663. vx:=1;
  664. vy:=1;
  665. vz:=-5;
  666. lx:=0;
  667. ly:=0;
  668. lz:=0;
  669. ax:=0;
  670. ay:=1;
  671. az:=0;
  672.  
  673. end;
  674.  
  675. procedure TForm1.Button11MouseDown(Sender: TObject; Button: TMouseButton;
  676.   Shift: TShiftState; X, Y: Integer);
  677. begin
  678. angle:=5;
  679. ry:=-0.2;
  680. end;
  681.  
  682. procedure TForm1.Button12MouseDown(Sender: TObject; Button: TMouseButton;
  683.   Shift: TShiftState; X, Y: Integer);
  684. begin
  685. angle:=5;
  686. ry:=0.2;
  687. end;
  688.  
  689. procedure TForm1.Button11MouseUp(Sender: TObject; Button: TMouseButton;
  690.   Shift: TShiftState; X, Y: Integer);
  691. begin
  692. angle:=0;
  693. ry:=0;
  694. end;
  695. //timer deaktivieren/pause
  696. procedure TForm1.Button13Click(Sender: TObject);
  697. var t:integer;
  698. begin
  699. t:=0;
  700. if button13.Caption='pause' then begin
  701. timer1.enabled:=false;
  702. button13.Caption:='weiter';
  703. t:=1;
  704. end;
  705. if (button13.Caption='weiter')and (t<>1) then begin
  706. timer1.enabled:=true;
  707. button13.Caption:='pause';
  708. end;
  709. end;
  710.  
  711. procedure TForm1.Button14Click(Sender: TObject);
  712. begin
  713. if  panel1.visible=false then
  714. panel1.visible:=true
  715. else
  716. panel1.visible:=false;
  717. panel1.caption:='w:z-(vor), s:z+(zurück), a:links(x-), d:x+(rechts), e/x:y+/-,  l/ä:y-achse drehen,   p/ö:x.achse drehen,   o/.:z-achse drehen';
  718.  
  719. end;
  720.  
  721. end.
  722.  
  723.  
  724.  



ihr wolltet es nicht anders :D


Zuletzt geändert von Axalus am Mi Dez 07, 2005 17:58, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 20:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 21, 2005 17:11
Beiträge: 10
Wohnort: Siegburg
ach ja
ein oder mehrere Tutorial für völlig hirnlose , denen man alles zehnmal erklären muss, würde solche codes verhindern.
vielen dank für eure hilfe und aufmerksamkeit.
ps:
viel spass beim rätseln :D :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 21:05 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Axalus hat geschrieben:
ach ja
ein oder mehrere Tutorial für völlig hirnlose , denen man alles zehnmal erklären muss, würde solche codes verhindern.
vielen dank für eure hilfe und aufmerksamkeit.
ps:
viel spass beim rätseln :D :wink:

Mach ruhig Vorschläge für solche Tuts und gib uns Feedback ;)

Ändere mal deinen obigen Code von [ Code] zu [ Pascal]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 21:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 21, 2005 17:11
Beiträge: 10
Wohnort: Siegburg
Vorschläge für tuts

Vorschlag1:
wie wäre es mit einem Tut für die Grundelemente der 3D Programmierung
ähnlich meinem programm.
man könne das Programm ja schritt für Schritt erweitern...
z.b. erstmal nur das koordinatenkreuz einzeichnen.
dann die ersten Objekte wie kugeln...:)
und dann das ganze drehen und rotieren.
und der gesammte Quelltext sollte dann für jeden Schritt abrufbar sein und die Värenderungen erklärt werden und besonsers gekennzeichnet.

_________________
tja Mein Motto:
Faulheit ist eine Tugend!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 21:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 21, 2005 17:11
Beiträge: 10
Wohnort: Siegburg
lieber ionos
:shock: du bist mathestudent?! :shock:
:D :idea: dann könntest du mir doch bestimmt einige Anregungen zur Themenfindung für meine Facharbeit in Mathe angeben :?: :idea: :D
*ausnutz*
wäre echt nett!
:wink:

_________________
tja Mein Motto:
Faulheit ist eine Tugend!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 22:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Mein Tipp: Editier deine Beiträge anstatt 2 direkt hintereinander zu schreiben!

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 06, 2005 23:41 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also wegen den Tutorials...

Wenn du unsere Tutorialsektion durcharbeitest passiert sowas net. Ein einfaches Wintemplate wo man nicht so hässlichen Initialisierungscode brauch baust du in diesem Tutorial: http://wiki.delphigl.com/index.php/Tutorial_quickstart

Was mir außerdem bisl Angst macht, ist die Tatsache, dass du da auch recht seltsamen VCL-Code mit stehen hast (die ganzen Button-Reaktionen).
Beschreib mal bitte wie du dir dein zukünftiges Programm vorstellst. Eventuell geht da schon grundlegend was schief. (Zeichnest du eigentlich auf ein Panel? Wenn man VCL Compos mit OpenGL kombinieren will, sollte man die beiden Teile auch schön trennen...)

Mach mal nen Screenshot vom momentanen Programm und häng den mal als jpg an.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 07, 2005 00:05 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Also...ich würde das ändern
Code:
  1. dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL;
Und zwar so:
Code:
  1. dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 07, 2005 16:39 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Und noch was: Rücke bitte deinen Code ein. Das macht so keinen Spaß zu Lesen...

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 07, 2005 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 21, 2005 17:11
Beiträge: 10
Wohnort: Siegburg
bitte nicht lachen
aber wie macht man einen Screenshot :?:

ach und wenn man das schreibt:
dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
klappt nix mehr. d.h. es wird nur die form1 mit den buttons angezeigt aber nix von opengl
Die Darstellung erfolgt auf der TForm1
mit den ganzen schaltern hab ich zuerst mal die Steuerung über buttons programmiert.
dazu habe ich mehrere Möglichkeiten ausprobiert.
dann kam mir die Ideeüber Tasten die Steuerung zu programmieren.
es ist ein echtes chaos...
aber ich hab euch gewarnt. :wink:

_________________
tja Mein Motto:
Faulheit ist eine Tugend!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.025s | 15 Queries | GZIP : On ]