| |
|
|
- Página 1 - |
|
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 |
|
|
| |
|
|
|
| |
|
- Página 1 - |
|
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. |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
| @Roland: Fehlt en Deiner oGLStartTest después de gluPerspective(...) una glMatrixMode(GL_MODELVIEW)? |
|
|
| |
|
|
|
RGH | Nun, lo es como zumindest no. Yo dache, lo debería como auch no posición. Aber Yo kann lo sí veces einbauen. Usted hast igual Post!
Saludo Roland |
|
|
| 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 | 22.01.2013 ▲ |
|
|
|
|
| |
|
| |
|
|
|
| RGH (22.01.13)
. Usted hast igual Post!
Saludo Roland
Keine Änderung!
stürzt ebenso en el 3 de 3 Computern de wo el vorherige Versión abstürzte.
Auf el otro 2 Computern wo lo funktioniert como funktionierts genau como el vorherige Versión. |
|
|
| |
|
|