网上源码我不知道,这些声称本身编译了freeglut他们是怎么在vs下编译的freeglut。我没法编译成功,多是我比较笨吧,最后不得不改动freeglut代码,完成了编译,并经过了例子功能测试。我仔细看了一下,glutInit( int* pargc, char** argv ) 函数内部并无作平台相关的ifdef,也就是说全部的平台都会要求实现int mask = XParseGeometry( geometry, &fgState.Position.X, &fgState.Position.Y, &parsedWidth, &parsedHeight );这显然是个xwindow的下的XLib函数,在windows下没有对应接口函数。我把这部分注释掉了。vs完成了编译,也经过了例子测试。git
fgPlatformInitialize( displayName );windows
/*
* Geometry parsing deferred until here because we may need the screen
* size.
*/函数
if (geometry )
{
unsigned int parsedWidth, parsedHeight;
/*int mask = XParseGeometry( geometry,
&fgState.Position.X, &fgState.Position.Y,
&parsedWidth, &parsedHeight );*/
/* TODO: Check for overflow? */
fgState.Size.X = parsedWidth;
fgState.Size.Y = parsedHeight;
/*
if( (mask & (WidthValue|HeightValue)) == (WidthValue|HeightValue) )
fgState.Size.Use = GL_TRUE;测试
if( mask & XNegative )
fgState.Position.X += fgDisplay.ScreenWidth - fgState.Size.X;orm
if( mask & YNegative )
fgState.Position.Y += fgDisplay.ScreenHeight - fgState.Size.Y;接口
if( (mask & (XValue|YValue)) == (XValue|YValue) )
fgState.Position.Use = GL_TRUE;*/
}
}源码
https://gitee.com/niuzhez 能够找到对应的vs2013的sln工程,与部分opengl例子。it