如何在不编译的情况下运行OpenGL代码?

如何在不编译的情况下运行OpenGL代码?,opengl,precompiling,Opengl,Precompiling,所以我有一些openGL代码(例如这样的代码) /*函数:YCamera::CalculateWorldCoordinates 参数:x鼠标x坐标 y坐标 vec存储坐标的位置 退货:不适用 描述:将鼠标坐标转换为世界坐标 */ void YCamera::计算RLD坐标(浮点x、浮点y、YVector3*vec){//开始闪烁视口[4];GLdouble mvmatrix[16],projmatrix[16]; 闪烁的真实; GLdouble-mx,my,mz; glGetIntegerv(G

所以我有一些openGL代码(例如这样的代码)

/*函数:YCamera::CalculateWorldCoordinates
参数:x鼠标x坐标
y坐标
vec存储坐标的位置
退货:不适用
描述:将鼠标坐标转换为世界坐标
*/
void YCamera::计算RLD坐标(浮点x、浮点y、YVector3*vec){//开始闪烁视口[4];GLdouble mvmatrix[16],projmatrix[16];
闪烁的真实;
GLdouble-mx,my,mz;
glGetIntegerv(GL_视口,视口);
glGetDoublev(GLU模型视图矩阵,mvmatrix);
glGetDoublev(GL_投影矩阵,projmatrix);
real_y=视口[3]-(闪烁)y-1;//视口[3]是以像素为单位的窗口高度
glunproject((GLdouble)x,(GLdouble)real_y,1.0,mvmatrix,projmatrix,viewport,&mx,&my,&mz);
/*“鼠标”是鼠标投影到达远平面的点。
世界坐标是直线(相机->鼠标)与平面(z=0)的交点(见LaMothe 306)
三维直线方程:
(x-x0)/a=(y-y0)/b=(z-z0)/c
直线与平面的交点:
z=0
x-x0=a(z-z0)/cx=x0+a(0-z0)/cx=x0-a*z0/c
y=y0-b*z0/c
*/
双lx=fPosition.x-mx;
双y=fPosition.y-my;
双lz=fPosition.z-mz;
双和=lx*lx+ly*ly+lz*lz;
双正态=sqrt(和);
双z0_c=F位置z/(lz/正常);
向量->x=(浮动)(fPosition.x-(lx/正常)*z0_c);
向量->y=(浮动)(F位置y-(y/正常)*z0_c);
向量->z=0.0f;
}
我想运行它,但没有预编译。有什么方法可以做这样的事情吗?

这在(OpenGL绑定)和(在JVM上运行)中是可能的。我想其他语言,比如Clojure/Jython,也可以通过LWJGL或Jogl来处理这个请求。还有一系列语言的OpenGL绑定,它们不需要(显式)编译,也不需要自己的REPL和/或“集成IDE”

C通常都需要编译,但我发现: 我相信还有其他性质类似的项目


快乐的编码。

没有“预编译”或“先编译”吗?
/*   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;
}