| |
|
|
Andreas Koch | ¡Hola zusammen,
una kurze Cuestión para Thema opengl y xpse: hay una Möglichkeit, una ogl("xyz",...) Befehl en un nproc einzubauen? Konkret es en el Befehl oGL("TestMouse", X, Y, Z), o @oGL("TestXY", X, Y, Z, SX, SY). Der Testmodus de opengl funktioniert no siempre así dolle y yo versuche en el Weg, ihn a umgehen.
Schönen Saludo
Andreas Koch |
|
|
| |
|
|
|
| Grüße!
Nein, específicamente dies va desafortunadamente todavía no -
lo war me en ersten Tests no gelungen, de el Ensamblador-DLL heraus a el XProfan-OGL-Context anzubinden y glaube, dass OGL como algo dagegen ha.
Yo weiß pero no genau woran el liegt aber en media ersten Tests con reinem nativen Profano, dass sin la Runtime auskommt, puede ser auch OpenGL nativ nutzen. Diese spezielle XPSE-Versión es aber todavía no öffentlich.
Was Yo no getestet hatte war el ganzen OGL-Context de uno nProc heraus a erzeugen, dies podría imho trabajo. |
|
|
| |
|
|
|
Andreas Koch | Erst una vez danke para el Antwort. Sorry, Tengo el Thema ahora 2veces eingestellt. (Yo hatte el no mehr gefunden.) Nächste Cuestión: Verstehe Yo deinen letzten Absatz correcto, dass Yo el sistema API-Befehle, para el el ogl-Befehl es, versuchen kann a nutzen? Wenn sí, wo finde Yo porque el API-Befehle para oGL("TestMouse", X, Y, Z), o @oGL("TestXY", X, Y, Z, SX, SY))? |
|
|
| |
|
|
|
RGH | Für el OpenGL-Api hay zahlreich (meist englische) Dokumentationen en el Netz, auch direkt en Microsoft. (Google hilft.) Viele el XProfan-OpenGL-Características vereinen aber mehrere API-Aufrufe, teilweise auch con komplexer Logik, a Open-GL-Programación a vereinfachen.Wenn uno en XProfan z.B. una Würfel con un Aufruf hecho, costumbre lo en nativer API una todo Reihe de Aufrufen.
Saludo 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 | Mein erster Intento fue, una OpenGL-API Ersatz para el beiden obigen Características para encontrar, qué no tan completamente erfolgreich war. Deswegen vermutete Yo auch, dass una todo Reihe de Befehlen detrás de él steckt, el en XProfan a uno Función zusammengefügt fueron. Um el sistema API-Befehle nachschlagen y direkt anwenden a puede, debería Yo aber wissen, como heißen. Deswegen mi Cuestión, qué hinter oGL("TestMouse", X, Y, Z), o @oGL("TestXY", X, Y, Z, SX, SY)) steckt.
PS: wiki.delphigl.com ha mich bisher en opengl siempre weitergebracht. |
|
|
| |
|
|
|
RGH | Bitte muy: Der Original-Code en 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
if 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);
If (ix + iy) > 0 then RPar.Lng := round(sqrt(ix + iy)) más 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
if 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);
If (ix + iy) > 0 then RPar.Lng := round(sqrt(ix + iy)) más RPar.Lng := 0;
RPar.Typ := 2;
Found := True;
End;
(Como el Foro sólo XProfan-Code correcto formatieren kann, sieht hay algo seltsam de. Mit wäre lo más bien, lo gäbe una Tga, el el Formatierung así lässt, Yo ellos mühevoll eingerichtet habe.)
Einige Anmerkungen: LesePara list el nächsten Parámetro el Programmzeile. Das Ergebnis se en beiden Características en RPar.Lng (Largo-Integer) zurückgeliefert.Fehler 400 besagt, dass OGL no initialisiert wurde y lo somit kein OGL-Ventana son.
Saludo 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 | Gracias para el Ayuda, Yo denke, daran kann Yo mich langhangeln.
Schönen Saludo
Andreas |
|
|
| |
|
|
|
RGH | Hilfreich tal vez auch todavía OGLStartTest y 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 the size of our seleccionar buffer
glSelectBuffer(512, @SelectBuffer);
// Change our render mode to GL_SELECT
glRenderMode(GL_SELECT);
// Init the namestack
glInitNames;
glPushName(0);
glMatrixMode(GL_PROJECTION);
glPushMatrix;
glLoadIdentity;
// Zoom the view to dx/dy pixel around the mouse position
gluPickMatrix(mx, viewport[4]-my, dx, dy, @viewport);
GetClientRect(oGLWnd,R);
Height := R.Bottom;
Width := R.Right;
if (Height = 0) then Height := 1;
if 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 the number of hits en Hits
Hits := glRenderMode(GL_RENDER);
// Now we look which hit has the lowest Z-Value i.e. qué en front
Hit := -1;
HitZValue := High(GLUInt);
for i := 0 to Hits-1 do
if 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)(Como el Foro sólo XProfan-Code correcto formatieren kann, sieht hay algo seltsam de. Mit wäre lo más bien, lo gäbe una Tga, el el Formatierung así lässt, Yo ellos mühevoll eingerichtet habe.)
Posesiones Su Postings dahingehend fix bearbeitet. Werde simplemente una 2. Code-Tag para einführen. [/offtopic] |
|
|
| |
|
|
|
| Andreas Koch (14.01.13)
Erst una vez danke para el Antwort. Sorry, Tengo el Thema ahora 2veces eingestellt. (Yo hatte el no mehr gefunden.)
Jojo, kein Streß.
Gibt auch una Forenübergreifende Información general aktueller Temas: [...] ¿Puede Su Thema simplemente auch incluso löschen, simplemente unten rechte en Tema opciones. |
|
|
| |
|
|
|
Andreas Koch | Noch una corto Apéndice,
en el Página de Uwe Pascal Niemeyer [...] hay una zip-Expediente (opengl2004.zip), worin se muy viele Beispiele a Programación con opengl befinden. Soweit Yo el überblicken kann, se esta en ogl("xyz",...) Befehle gänzlich verzichtet. Yo vermute, el Codes stammen de uno Tiempo bevor openGl en XProfan eingebunden war. Sie trabajo aber todavía tadellos. Como fue una Ejemplo esta, el el Original-Delphi Codes de RGH en el Wesentlichen abbildet. Allen, el con opengl a tun haben, kann Yo esta Beispiele sólo empfehlen.
Schönen Saludo
Andreas Koch |
|
|
| |
|
|
|
| Stimmt, el son super. Tuve damals así una 3D-Snake programmiert y weiß el uno así correcto komplexe Umgebungen herzaubern kann. |
|
|
| |
|
|