2010-04-02 3 views
1

Так у меня есть некоторый OPENGL код (например код, например)Как запустить 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; 
} 

Я хочу, чтобы запустить его, но с из Прекомпиляция. Есть ли способ сделать такую ​​вещь

+0

Без предварительной компиляции или без компиляции сначала? –

ответ

2

Это возможно с LWJGL (привязка OpenGL) и REPL в Scala (работает на JVM). Я полагаю, что другие языки, такие как Clojure/Jython, могут также обрабатывать этот запрос - либо через LWJGL, либо Jogl. Существуют также привязки OpenGL для целого ряда языков, которые не требуют (явного) компиляции или имеют свои собственные REPL и/или интегрированные IDE.

C обычно всегда требуется компиляция, но я нашел это: http://neugierig.org/software/c-repl/ и я уверен, что есть другие проекты, похожие на природу.

Счастливое кодирование.

Смежные вопросы