موقف نقطة OpenGL بعد التقديم (3D -> 2D)
-
27-09-2019 - |
سؤال
لدي مشهد OpenGL مع بعض الأرقام على ذلك. هل يمكن أن تخبرني بما يجب أن أفعله لحساب مواقف القمة بعد "التقديم"؟ أعلم أنني ربما أحتاج إلى ضرب بعض المصفوفات ، لكنني لا أعرف أي منها وكيف.
شكرا مقدما على أي مساعدة!
المحلول
ألق نظرة على gluProject()
وظيفة.
تحرير: وجدت أيضا في OpenGL الأسئلة الشائعة:
9.100 كيف يمكنني العثور على إحداثيات الشاشة لإحداثيات مساحة كائن معينة؟
(نفس الإجابة ، رغم ذلك)
نصائح أخرى
هل تريد معرفة الحد الأقصى لمدى الشاشة على شاشتك في وحدات البكسل؟
إذا كان الأمر كذلك ، فإن أبسط طريقة للذهاب هي استدعاء Gluproject لجميع رؤوسك وتخزين المواضع الحد الأقصى والحد الأدنى X و Y.
يمكن أن تبدو هكذا:
GLdouble modelview[16], projection[16]
GLint viewport[4];
glGetDoublev(GL_MODELVIEW_MATRIX, *modelView);
glGetDoublev(GL_PROJECTION_MATRIX, *projection);
glGetIntegerv(GL_VIEWPORT, *viewport);
double tx, ty, tz;
for(i = 0; i < VertexCount; i++)
{
glProject(vertices[i].x, vertices[i].y, vertices[i].z,
modelview, projection, viewport,
*tx, *ty, *tz);
// now, the 2d position of the ith Vertex is stored in tx, ty, tz.
// you can now use these values to determine the 2d-extends on your screen
}
لا تنتمي إلى StackOverflow