AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lazarus + OpenGL: LCL statt GLUT

Ein Thema von Jakob Ullmann · begonnen am 20. Feb 2010 · letzter Beitrag vom 7. Apr 2012
Antwort Antwort
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#1

Re: Lazarus + OpenGL: LCL statt GLUT

  Alt 23. Feb 2010, 17:14
Ja, das ist klar.

Ich hatte mich gerade mal hingesetzt und wollte mein erstes OpenGL Programm kompilieren. Nun denn, ich ziehe ein TOpenGLControl auf das Formular und schreibe folgenden Code:

Delphi-Quellcode:
unit unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  OpenGLContext, GL, GLU;

type

  { TForm1 }

  TForm1 = class(TForm)
    OpenGLControl1: TOpenGLControl;
    procedure OpenGLControl1Paint(Sender: TObject);
    procedure OpenGLControl1Resize(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.OpenGLControl1Paint(Sender: TObject);
begin
  glClearColor(1.0, 1.0, 1.0, 1.0);
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  glEnable(GL_DEPTH_TEST);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();

  gluPerspective(60, Double(OpenGLControl1.Width) / OpenGLControl1.Height, 0.1, 100.0);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();

  glBegin(GL_TRIANGLES);
    glColor3f(1, 0, 0); glVertex3f(0, 1, 0);
    glColor3f(0, 1, 0); glVertex3f(-1, 0, 0);
    glColor3f(0, 0, 1); glVertex3f(1, 0, 0);
  glEnd();

  OpenGLControl1.SwapBuffers;
end;

procedure TForm1.OpenGLControl1Resize(Sender: TObject);
begin

end;

initialization
  {$I unit1.lrs}

end.
Abspeichern, compilieren (F9). Und freuen dass ein schönes Dreieck erscheint? Nein, Lazarus schickt mir das tolle Assemblerfenster mit dem Titel "Assembler", was sich dann schließt, danach drücke ich auf das Viereck ("Halt"). Und es kommt die Meldung, die auch schon im Zusammenhang mit startlazarus aufgetreten ist: AccessViolation. Cancel und Lazarus verabschiedet sich (schließt sich). "Normale" Projekte (ohne das TOpenGLControl) kann ich ganz normal compilieren. Woran könnte das liegen?

Hat jemand eine Idee?

EDIT: Da fällt mir ein, diese lustigen Assemblerfenster kenne ich. Und zwar habe ich schonmal mit einem StringGrid gespielt, bzw. dessen OnDrawCell-Event. Allerdings kam das da erst nach dem Schließen.
Jakob
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:16 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