AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi OpenGL 3ds laden geht nicht ?!?
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL 3ds laden geht nicht ?!?

Ein Thema von Chefx · begonnen am 30. Nov 2009 · letzter Beitrag vom 30. Nov 2009
 
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#1

OpenGL 3ds laden geht nicht ?!?

  Alt 30. Nov 2009, 21:29
hey leute,

ich probiere schon stunden aber irgendwie sehe ich nur weiß
also ich habe eine 3ds mit blender erstellt (standart-würfel) und cube.3ds genannt.
so und dann halt die normalen routinen geschrieben die halt dafür nötig sind:
Delphi-Quellcode:
unit skybox1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,dglOpenGL, AppEvnts, GLBmp, StdCtrls, ExtCtrls,gl3ds;

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
    procedure FormResize(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    FDC : HDC;
    FRC : HGLRC;
    List : Cardinal;
    yrot ,xrot : TGLFloat;
    x,y:real;
    OMpos : TPoint;
    mesh: TAll3dsMesh;
    procedure GLInit;
    procedure LoadSkyBox;
    procedure GenerateSkyBox(pWidth, pHeight, pLength : TGLFloat);
    procedure DrawScene;
  end;

var
  Form1: TForm1;
  SkyBoxTexture : Array[0..5] of TGLBmp;
  timefactor : double = 1;
  fps : integer = 20;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
 Dummy : HPalette;
begin
InitOpenGL;
// Get a handle from our Window
FDC := GetDC(Handle);
// Generate our rendering context with a color depth of 32Bpp
FRC := CreateRenderingContext(FDC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
// Save our old mouse position
OMPos := Mouse.CursorPos;
ActivateRenderingContext(FDC, FRC);
GLInit;
LoadSkyBox;

mesh:= TAll3dsMesh.Create(nil); //erstellen
mesh.LoadFromFile('cube.3ds'); // objekt laden

Cursor := crCross;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeActivateRenderingContext;
wglDeleteContext(FRC);
ReleaseDC(Handle, FDC);
Mesh.free;//freigabe
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
//courser berchnen und und undd....
end;

procedure TForm1.FormResize(Sender: TObject);
begin
if HandleAllocated then
 begin
 glViewport(0, 0, ClientWidth, ClientHeight);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity;
 gluPerspective(45, ClientWidth/ClientHeight, 0.1, 1000);
 end;
end;

procedure TForm1.GLInit;
begin
// Enable texture mapping
glEnable(GL_TEXTURE_2D);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
if fps=0 then
begin
fps := 1;
end;
timefactor := 20/fps;
fps := 0;
end;

procedure TForm1.LoadSkyBox;
//bilder für skybox laden
end;

procedure TForm1.GenerateSkyBox(pWidth, pHeight, pLength : TGLFloat);
///erstellt eine Skybox
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
DrawScene;
SetCursorPos(Width div 2 + left, height div 2 + top);
fps := fps+1;
end;

procedure TForm1.DrawScene;
begin
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
// As the Skybox will fill the entire screen, we will only have to clear
// the depth buffer and not the color buffer
glClear(GL_DEPTH_BUFFER_BIT);
//glRotatef(xrot, 1, 0, 0);
//glRotatef(yrot, 0, 1, 0);

glTranslated(0,0,-xrot);
mesh.Render; // rendern
// Call the Displaylist of our Skybox
glCallList(List);
SwapBuffers(FDC);
end;


end.
hab ich irgendwas vergessen oder ..?.. wie?
bitte helft mir

ich weiß sonst nicht mehr was ich machen soll?

ich danke im vorraus
MfG
chefx
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  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 02:27 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 by Thomas Breitkreuz