CursorByte Ответов: 0

Pickmatrix in на самом деле не работает OpenGL picking


Я указал размеры матрицы выбора. Однако подсчет попаданий дает результаты для всех нарисованных точек в этом случае.

Я хочу, чтобы хитом были те, кто находится вокруг точки щелчка.

Заранее спасибо за помощь

Что я уже пробовал:

OpenGL gl = openGLControl.OpenGL;



int[] vp = new int[4];


//gl.Ortho2D(mousePos.X, mousePos.X + 0.1, mousePos.Y + 0.0001, mousePos.Y + 0.0001);
//gl.MatrixMode(OpenGL.GL_PROJECTION);

////gl.Ortho2D(mousePos.X, mousePos.X,1, 1);

 gl.Ortho2D(left -(top-bottom)*(aspect % 1)/2 , right+ (top - bottom) * (aspect % 1) / 2, bottom, top);
 gl.LoadIdentity();
 gl.PickMatrix(mousePos.X, mousePos.Y,0, 0, vp);
uint[] selectBuffer = new uint[100];
gl.SelectBuffer(100, selectBuffer);
gl.PushMatrix();


//int[] vp = new int[4];
//gl.GetInteger(OpenGL.GL_VIEWPORT, vp);



gl.InitNames();
gl.PushName(0);

gl.Begin(OpenGL.GL_POINTS);
gl.PointSize(20);
gl.Color(1.0f, 1.0f, 0.0f);
gl.Vertex(1.32, 0.5);



gl.End();
gl.LoadIdentity();
gl.PushName(1);

gl.Begin(OpenGL.GL_POINTS);
gl.PointSize(20);

gl.Color(1.0f, 0.8f, 0.0f);
gl.Vertex(0.55, 0.55);

gl.End();



//gl.PickMatrix(e.GetPosition(openGLControl).X, openGLControl.ActualHeight - e.GetPosition(openGLControl).Y, 4, 4, vp);
//gl.Ortho2D(left, right, bottom, top);
///

//gl.Begin(OpenGL.GL_POINTS);
//gl.PointSize(20);
//gl.Color(1.0f, 1.0f, 0.0f);
//gl.Vertex(0.5, 0.5);

//gl.End();

/////
//gl.MatrixMode(OpenGL.GL_PROJECTION);
//gl.PopMatrix();
int hits = gl.RenderMode(OpenGL.GL_RENDER);

0 Ответов