Witam,
Mam scenę OpenGL napisaną w Delphi 7 i teraz chciałbym wyświetlić w Labelach współrzędne punktu w przestrzeni, na który wskazuje kursor. W jaki sposób mógłbym to zrobić?.
Pozdrowienia.
Witam,
Mam scenę OpenGL napisaną w Delphi 7 i teraz chciałbym wyświetlić w Labelach współrzędne punktu w przestrzeni, na który wskazuje kursor. W jaki sposób mógłbym to zrobić?.
Pozdrowienia.
to jest trudna sprawa
wszedzie pokazuja ze tak
function GetOpenGLPos(X, Y: Integer): PGLVEC3;
var
viewport: TGLVectori4;
modelview: TGLMatrixd4;
projection: TGLMatrixd4;
winZ,winY: Single;
begin
glGetDoublev(GL_MODELVIEW_MATRIX, @modelview ); // Get the Current Modelview matrix
glGetDoublev(GL_PROJECTION_MATRIX, @projection ); // Get the Current Projection Matrix
glGetIntegerv(GL_VIEWPORT, @viewport ); // Get the Current Viewport
winY := viewport[3] - y; //Change from Win32 to OpenGL coordinate system
glReadPixels(X, Round(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @winZ );//Read the Depth value at the current X and Y position
gluUnProject(X, winY, winZ,
@modelview, @projection, @viewport, // Get the vector for the current mouse position
Result.x, Result.y, Result.z); // And Return it from the function
end;
problem w tym ze ten sposob nie dziala moze przed glReadPixels trzeba dac glReadBuffer(GL_DEPTH_BUFFER_BIT);
pozniej glreadpixels
a pozniej
gluUnProject
szczerze bawilem sie tym i zawsze pokazuje mi punkt o kilka pikseli za wysoko wiec cos jest nie tak
poczytaj sobie o glunproject i takim pobieraniu z zbuffera ja ci tego tlumaczyc nie bede ale jest tam kilka chaczykow ktore sam sobie pokmin