草庐IT

c++ - 将对象移动到场景中的指定点?

我一直在尝试使用3dsmax模型拼凑一个国际象棋游戏。此时,我已经能够导入模型,突出显示我有兴趣移动的所选游戏block,并选择我要移动到的方block。这是当前状态的屏幕截图:http://img26.imageshack.us/img26/9555/chessk.png黑色圆圈代表我点击的地方,你可以看到棋子去了哪里。具体应该去哪里我没有做过具体的计算。每当我用选定的棋子点击棋盘时,它总是朝相同的方向移动。这是因为刚开始时放入了这个虚拟代码:if(isObjectSelected&&isSquareSelected&&moveObject){glPushMatrix();glTra

c++ - OpenGL:如何在不移动整个场景的情况下移动二维对象?

好吧,我正在尝试使用C++中的OpenGL重新创建经典的MissileCommand。这是我第一次涉足OpenGL,尽管此时我对C++感到相当满意。我认为我的第一个任务是弄清楚如何在屏幕上移动二维对象,这看起来相当简单。我创建了两个快速方法调用来制作三角形或四边形:voidmakeTriangle(color3ftheColor,vertex2f&p1,vertex2f&p2,vertex2f&p3,int&xOffset,int&yOffset){//atriangleglBegin(GL_POLYGON);glColor3f(theColor.red,theColor.green,

c++ - 对纹理进行增量更新的最佳方法? (渲染到纹理)

我想在OpenGL中渲染纹理,但对纹理进行增量更改。这是我想象的过程:清除Color&glViewport()到纹理大小绘制原始纹理(glOrtho或其他),如何以完美的质量复制原始纹理?绘制增量更改再次清除,将视口(viewport)设置为屏幕大小绘制场景并翻转有没有更好的方法来做到这一点? 最佳答案 你有两个选择。如果您的硬件不支持FBO,您将不得不按照您编写的方式进行操作。要绘制原始纹理,只需绘制一个具有[0,1]纹理坐标的屏幕大小的四边形。确保使用GL_NEAREST作为过滤模式,使用GL_CLAMP_TO_EDGE作为环绕

c++ - OpenGL:一个简单的过剩立方体没有光

OpenGL:简单的过剩立方体没有光嗨,我正在尝试研究opengl和glut中的灯光,但我很早就遇到了问题。我有这段代码,用于使用自定义相机设置在自定义位置制作发光立方体:voidtestApp::draw(){   staticfloatamb[]= {0.4,0.4,0.4,0.0};   staticfloatdif[]= {1.0,1.0,1.0,0.0};      floatlight_diffuse[]={1.0,0.0,1.0,1.0};   floatlight_position[]={-1.0,1.0,1.0,0.0};//itriedalotofpositions

c++ - 如何将QImage格式转换为OpenGL支持的格式

我正在使用QImage加载图像,然后将其用作OpenGL中的纹理。问题是颜色分量在QImage和OpenGL中有不同的顺序。目前我在OpenGL中使用GL_RGBA格式,在Qt中使用QImage::Format_ARGB32。因此,在OpenGL中创建纹理之前,我必须为加载图像的每个像素手动交换字节。此外,要正确交换字节,我需要知道机器的字节顺序。有人知道更好的解决方案吗?至少,有什么方法可以使这种转换与字节顺序无关吗?谢谢。 最佳答案 glTex(Sub)Image的最后三个参数定义了pixeltransfertoOpenGL发生

c++ - 为什么 OpenGL 雾只是不出现?

这就是我在OpenGL中启用雾的方式:floatfog_colour[4]={1,1,1,1};glEnable(GL_FOG);glFogf(GL_FOG_MODE,GL_EXP2);glFogfv(GL_FOG_COLOR,fog_colour);glFogf(GL_FOG_DENSITY,0.5);glHint(GL_FOG_HINT,GL_NICEST);glFogf(GL_FOG_START,0.1);glFogf(GL_FOG_END,100);每个物体都在0.1-100范围内,但是雾就是不出现,这是怎么回事? 最佳答案

c++ - 顶点缓冲区对象中的颜色 - DirectX 与 OpenGL

我正在开发一个小型游戏引擎。它的特点之一是它应该支持DirectX和OpenGL渲染。我正在使用顶点缓冲区对象,我有一个结构来定义我的顶点格式。问题是我希望能够对DirectX和OpenGL使用相同的结构,这样我就可以在不更改对象顶点的情况下从DirectX渲染组件切换到OpenGL渲染组件。这可能吗?目前,我正在为DirectX使用以下结构:structVertex{floatposition[3];//x,y,zfloatnormal[3];//nx,ny,nzDWORDcolour;//Thevertexcolorfloattexture[2];//u,v};连同:#define

c++ - 在QML插件的QGLWidget上渲染QImage

我正在尝试编写一个QML插件,它从视频中读取帧(使用自定义小部件来完成该任务,而不是QtMultimedia/Phonon),并且每个帧都被转换为QImageRGB888,然后显示在QGLWidget上(出于性能原因)。现在没有任何东西被绘制到屏幕上,屏幕一直保持白色。重要的是要声明我已经在没有QGLWidget的情况下完成了所有这些工作,所以我知道问题在于QGLWidget的设置和绘制。插件正在注册:qmlRegisterType<Video>(uri,1,0,"Video");所以Video是插件的主类。在它的构造函数中我们有:Video::Video(QDeclara

c++ - OpenGL:在两个元素之间画线

我需要在我创建的两个网格之间画一条线。每个网格都与不同的模型矩阵相关联。我一直在考虑如何做到这一点,我想到了这个:glMatrixMode(GL_MODELVIEW);glLoadMatrixf(first_object_model_matrix);glBegin(GL_LINES);glVertex3f(0,0,0);//objectcoordglMatrixMode(GL_MODELVIEW);glLoadMatrixf(first_object_model_matrix);glVertex3f(0,0,0);//endingpointofthelineglEnd();但问题是我无

c++ - 在现代游戏设计中,游戏的哪些部分被编写为可移植的?

假设您是一家大公司,正在制作一款轰动一时的大型游戏,目标市场是PC、Mac、Xbox和PS3。假设您选择了C++,就像大多数工作室倾向于做的那样。您将其中的哪些部分编写为可移植代码?是否有可能真正编写一款便携游戏?上新平台是否需要重写渲染引擎和用户界面? 最佳答案 一个有根据的猜测是,除了硬件相关代码之外的所有内容都是为了可移植而编写的。IE。游戏逻辑、vector图形、声音(?)(相当)便携、图形输出、内存管理、计时不是(总是)。通过选择合适的库,可以最大限度地增加可移植代码的数量。