سؤال

لذلك لدي بعض رمز OpenGL (مثل هذا الرمز على سبيل المثال)

/*   FUNCTION:        YCamera :: CalculateWorldCoordinates
     ARGUMENTS:       x         mouse x coordinate
                      y         mouse y coordinate
                      vec       where to store coordinates
     RETURN:          n/a
     DESCRIPTION:     Convert mouse coordinates into world coordinates
*/
void YCamera :: CalculateWorldCoordinates(float x, float y, YVector3 *vec) { // START GLint viewport[4]; GLdouble mvmatrix[16], projmatrix[16];

 GLint real_y;
GLdouble mx, my, mz;

glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix);
glGetDoublev(GL_PROJECTION_MATRIX, projmatrix);

real_y = viewport[3] - (GLint) y - 1;   // viewport[3] is height of window in pixels
gluUnProject((GLdouble) x, (GLdouble) real_y, 1.0, mvmatrix, projmatrix, viewport, &mx, &my, &mz);

/*      'mouse' is the point where mouse projection reaches FAR_PLANE.
        World coordinates is intersection of line(camera->mouse) with plane(z=0) (see LaMothe 306)

        Equation of line in 3D:
                (x-x0)/a = (y-y0)/b = (z-z0)/c          

        Intersection of line with plane:
                z = 0
                x-x0 = a(z-z0)/c  <=> x = x0+a(0-z0)/c  <=> x = x0 -a*z0/c
                y = y0 - b*z0/c

*/
double lx = fPosition.x - mx;
double ly = fPosition.y - my;
double lz = fPosition.z - mz;
double sum = lx*lx + ly*ly + lz*lz;
double normal = sqrt(sum);
double z0_c = fPosition.z / (lz/normal);

vec->x = (float) (fPosition.x - (lx/normal)*z0_c);
vec->y = (float) (fPosition.y - (ly/normal)*z0_c);
vec->z = 0.0f;
}

أريد تشغيله ولكن دون تجميع. هل هناك أي طريقة للقيام بمثل هذا الشيء

هل كانت مفيدة؟

المحلول

هذا ممكن مع LWJGL (OpenGL Binding) و ال استبدال في سكالا (يدير على JVM). أتصور أن لغات أخرى مثل Clojure/Jython يمكنها أيضًا التعامل مع هذا الطلب - إما من خلال LWJGL أو JOGL. هناك أيضًا روابط OpenGL لمجموعة كاملة من اللغات التي لا تتطلب (صريح) تجميع أو تأتي مع repl و/أو "IDE المتكاملة".

يتطلب C عادةً دائمًا تجميعًا ، لكنني وجدت هذا:http://neugierig.org/software/c-repl/ وأنا متأكد من أن هناك مشاريع أخرى مماثلة في الطبيعة.

ترميز سعيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top