| |
|
|
Andreas Koch | allô zusammen,
une kurze Frage zum Thema opengl et xpse: gibt es une Possibilité, une ogl("xyz",...) Befehl dans un nproc einzubauen? Konkret ca va um den Befehl oGL("TestMouse", X, Y, Z), bzw @oGL("TestXY", X, Y, Z, SX, SY). qui Testmodus de opengl funktioniert pas toujours so dolle et je versuche sur dem Weg, ihn trop tourner autour de.
Schönen Salut
Andreas Koch |
|
|
| |
|
|
|
| Grüße!
non, entier speziell ca allez malheureusement encore pas -
es était mir dans ersten Tests pas gelungen, aus qui Assembler-DLL heraus à den XProfan-OGL-Context anzubinden et glaube, dass OGL là quelque chose dagegen hat.
je sais mais pas oui c'est ca woran cela liegt mais dans meinen ersten Tests avec reinem nativen Profan, dass sans qui Runtime auskommt, peux on aussi OpenGL nativ nutzen. cet spezielle XPSE-Version ist mais encore pas öffentlich.
quoi je pas getestet hatte était den ganzen OGL-Context aus einer nProc heraus trop erzeugen, ca pourrait imho marcher. |
|
|
| |
|
|
|
Andreas Koch | seulement einmal merci pour qui Antwort. Sorry, j'ai cela Thema maintenant 2la fois eingestellt. (je hatte cela pas plus trouvé.) prochain Frage: Verstehe je deinen letzten paragraphe richtig, dass je qui Api-Befehle, pour qui qui ogl-Befehl steht, versuchen peux trop nutzen? si oui, wohin finde je car qui API-Befehle pour oGL("TestMouse", X, Y, Z), bzw @oGL("TestXY", X, Y, Z, SX, SY))? |
|
|
| |
|
|
|
RGH | Pour qui OpenGL-Api gibt es nombreuse (meist englische) Dokumentationen im Netz, aussi direct chez Microsoft. (Google hilft.) Viele qui XProfan-OpenGL-Funktionen vereinen mais plusieurs API-Aufrufe, partiellement aussi avec komplexer Logik, à Open-GL-Programmation trop simplifier.si on dans XProfan z.B. une Würfel avec einem Aufruf erledigt, coutume es dans nativer API une ganze Reihe de Aufrufen.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.01.2013 ▲ |
|
|
|
|
Andreas Koch | mon erster Versuch était aussi, une OpenGL-API Ersatz pour qui beiden obigen Funktionen pour trouver, quoi pas so entier erfolgreich était. Deswegen vermutete je aussi, dass une ganze Reihe de Befehlen derrière elle steckt, qui dans XProfan trop einer Funktion zusammengefügt wurden. Um qui Api-Befehle nachschlagen et direct anwenden trop peut, devrait je mais savons, comment qui appeler. Deswegen mon Frage, quoi derrière oGL("TestMouse", X, Y, Z), bzw @oGL("TestXY", X, Y, Z, SX, SY)) steckt.
PS: wiki.delphigl.com hat mich bisher chez opengl toujours weitergebracht. |
|
|
| |
|
|
|
RGH | s'il te plaît très: qui Original-Code dans Delphi:
procedure fnOGLTestMouse;
{-----------------------}
var x, y, z: double;
ix, iy: longint;
fx, fy, fz: double;
modelview: array[1 .. 16] of double;
projection: array[1 .. 16] of double;
viewport: array[1 .. 4] of longint;
R: TRect;
Begin
si oGLWnd = 0 Then FehlerNr(400,'');
GetClientRect(oGLWnd,R);
LesePara(ParStack,',',0);
x := RPar.Dbl;
LesePara(ParStack,',',0);
y := RPar.Dbl;
LesePara(ParStack,')',0);
z := RPar.Dbl;
glGetDoublev(GL_MODELVIEW_MATRIX, @modelView);
glGetDoublev(GL_PROJECTION_MATRIX, @projection);
glGetIntegerv(GL_VIEWPORT, @viewPort);
gluProject(x, y, z, @modelView, @projection, @viewPort, fx, fy, fz);
ix := sqr(round(fx) - Mausx);
iy := sqr((R.Bottom - round(fy)) - Mausy);
Si (ix + iy) > 0 then RPar.Lng := round(sqrt(ix + iy)) d'autre RPar.Lng := 0;
RPar.Typ := 2;
Found := True;
End;
procedure fnOGLTestXY;
{--------------------}
var x, y, z: double;
ix, iy: longint;
dx, dy: longint;
fx, fy, fz: double;
modelview: array[1 .. 16] of double;
projection: array[1 .. 16] of double;
viewport: array[1 .. 4] of longint;
R: TRect;
Begin
si oGLWnd = 0 Then FehlerNr(400,'');
GetClientRect(oGLWnd,R);
LesePara(ParStack,',',0);
x := RPar.Dbl;
LesePara(ParStack,',',0);
y := RPar.Dbl;
LesePara(ParStack,',',0);
z := RPar.Dbl;
LesePara(ParStack,',',0);
dx := RPar.Lng;
LesePara(ParStack,')',0);
dy := RPar.Lng;
glGetDoublev(GL_MODELVIEW_MATRIX, @modelView);
glGetDoublev(GL_PROJECTION_MATRIX, @projection);
glGetIntegerv(GL_VIEWPORT, @viewPort);
gluProject(x, y, z, @modelView, @projection, @viewPort, fx, fy, fz);
ix := sqr(round(fx) - dx);
iy := sqr((R.Bottom - round(fy)) - dy);
Si (ix + iy) > 0 then RPar.Lng := round(sqrt(ix + iy)) d'autre RPar.Lng := 0;
RPar.Typ := 2;
Found := True;
End;
(là cela Forum seulement XProfan-Code richtig formatieren peux, sieht es quelque chose seltsam aus. avec wäre es lieber, es gäbe un Tga, cela qui Formatierung so peut, comment je vous mühevoll installé habe.)
quelques Anmerkungen: LesePara list den prochain paramètre qui Programmzeile. cela Ergebnis wird dans beiden Funktionen dans RPar.Lng (Long-Integer) zurückgeliefert.faute 400 besagt, dass OGL pas initialisiert wurde et es somit ne...aucune OGL-la fenêtre gibt.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.01.2013 ▲ |
|
|
|
|
Andreas Koch | merci pour qui Aider, je denke, daran peux je mich langhangeln.
Schönen Salut
Andreas |
|
|
| |
|
|
|
RGH | Hilfreich peut-être aussi encore OGLStartTest et OGLEndTest:
procedure oGLStartTest(mx, my, dx, dy: integer);
{---------------------------------------------}
var
viewport: array[1 .. 4] of longint;
wh: double;
R: TRect;
width, height: integer;
begin
// Store our Viewport
glGetIntegerv(GL_VIEWPORT, @viewport);
// Tell OpenGL le size of our sélectionner buffer
glSelectBuffer(512, @SelectBuffer);
// Change our render mode to GL_SELECT
glRenderMode(GL_SELECT);
// Init le namestack
glInitNames;
glPushName(0);
glMatrixMode(GL_PROJECTION);
glPushMatrix;
glLoadIdentity;
// Zoom le view to dx/dy pixel around le mouse position
gluPickMatrix(mx, viewport[4]-my, dx, dy, @viewport);
GetClientRect(oGLWnd,R);
Height := R.Bottom;
Width := R.Right;
si (Height = 0) then Height := 1;
si OGLwh <= 0 then wh := Width/Height else wh := OGLwh;
gluPerspective(45.0, wh, 0.1, oGLDepth);
End;
function oGLEndTest:longint;
{--------------------------}
var
Hits, Hit, i : Integer;
HitZValue : GLUInt;
begin
glMatrixMode(GL_PROJECTION);
glPopMatrix;
// Now store le number of hits dans Hits
Hits := glRenderMode(GL_RENDER);
// Now we look which hit has le lowest Z-Value i.e. quoi dans front
Hit := -1;
HitZValue := High(GLUInt);
for i := 0 to Hits-1 do
si SelectBuffer[(i*4)+1] < HitZValue then
begin
Hit := SelectBuffer[(i*4)+3];
HitZValue := SelectBuffer[(i*4)+1];
end;
Result := Hit;
end; |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.01.2013 ▲ |
|
|
|
|
| [offtopic] RGH (14.01.13)(là cela Forum seulement XProfan-Code richtig formatieren peux, sieht es quelque chose seltsam aus. avec wäre es lieber, es gäbe un Tga, cela qui Formatierung so peut, comment je vous mühevoll installé habe.)
Habe Votre Postings dahingehend fix bearbeitet. Werde simple un 2. Code-journée pour einführen. [/offtopic] |
|
|
| |
|
|
|
| Andreas Koch (14.01.13)
seulement einmal merci pour qui Antwort. Sorry, j'ai cela Thema maintenant 2la fois eingestellt. (je hatte cela pas plus trouvé.)
Jojo, ne...aucune Streß.
Gibt aussi une Forenübergreifende Vue d'ensemble aktueller Sujets: [...] peux Dein Thema simple aussi selbst effacer, simple unten rechte chez Options du sujet. |
|
|
| |
|
|
|
Andreas Koch | encore un court Nachtrag,
sur qui page de Uwe Pascal Niemeyer [...] gibt es une zip-Dossier (opengl2004.zip), worin sich très viele Beispiele zur Programmation avec opengl befinden. Soweit je cela überblicken peux, wird dabei sur ogl("xyz",...) Befehle gänzlich verzichtet. je vermute, qui Codes stammen aus einer Zeit bevor openGl dans XProfan eingebunden était. vous marcher mais encore correcte. là était aussi un Beispiel dabei, cela qui Original-Delphi Codes de RGH im Wesentlichen abbildet. Allen, qui avec opengl trop 1faire avons, peux je cet Beispiele seulement empfehlen.
Schönen Salut
Andreas Koch |
|
|
| |
|
|
|
| Stimmt, qui sommes super. je hatte autrefois avec cela un 3D-Snake programmiert et sais cela on avec cela richtig komplexe Umgebungen herzaubern peux. |
|
|
| |
|
|