Questions tagged «c++»

C ++是一种静态类型化,自由格式,多范例,已编译的通用编程语言。

2
C ++上的随机数
最近,我习惯了现代语言,其中包括一个很好的随机生成器,通常是Mersenne Twister。回到C ++之后,我必须决定使用什么。 我搜索了Mersenne Twister实现,然后发现有这么多实现:是否有一种使用更广泛,使用更广泛的实现,还是应该假设它们都一样好而选择一种?
12 c++  random 

4
面向对象的OpenGL
我使用OpenGL已经有一段时间了,并且阅读了大量的教程。除了它们中的许多仍在使用固定管道这一事实外,它们通常会将所有的初始化,状态更改和绘制都放在一个源文件中。对于教程的有限范围来说,这很好,但是我很难确定如何将其扩展到完整的游戏。 如何将OpenGL的使用跨文件分割?从概念上讲,我可以看到拥有一个仅将内容渲染到屏幕上的渲染类的好处,但是诸如着色器和灯光之类的东西将如何工作?我应该为灯光和着色器之类的课程设置单独的类吗?

3
我应该如何安装第一人称相机?
我是一名初学者程序员,正在创建一个项目,该项目使我可以通过第一人称相机在房间中走动。到目前为止,我已经绘制了建筑物并继续进行,但现在我受困了,不知道如何制作第一人称视角的相机让我走来走去。 谁能指出我可以使用的相机类别或一些有用的代码?
12 c++  directx  camera 

1
编程一个类似古墓丽影的攀登系统
我想知道是否有人知道或不知道如何编程一个像在古墓丽影/未知领域中找到的那样的攀岩系统。 我曾想过要在游戏世界的所有可攀爬位置上放置边界框,然后检查是否发生碰撞。如果玩家在盒子里面,那么他们将在边缘“悬挂”。任何人都有更好的主意/改进吗? 我已经使用Directx9设置了渲染,稍后将担心动画。

3
物理引擎所需的建议
我最近开始了一个项目,构建了一个物理引擎。我希望您能给我一些有关文档和/或最佳技术的建议。 首先,我发现强烈建议将Game-Physics-Engine-Development用于手头的任务,我想知道您是否可以给我第二个意见,我应该得到吗?另外,在浏览Amazon时,我偶然发现了 Game Engine Architecture,并且由于我想为游戏构建物理引擎,因此我认为这可能也是一本好书。 其次,我知道模拟物理是高度计算密集型的,所以我想使用CUDA或OpenCL。现在我倾向于OpenCL,因为它可以在NVIDIA和ATI芯片组上使用。 PS:我将在Linux上用C ++实现。

8
2d Game Dev(C ++)入门:DirectX还是OpenGL?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 因此,我是一名学生,希望进入游戏开发的大门,而我却希望做2D事情,也许是俄罗斯方块/太空入侵者/带有小鼠标互动克隆的东西。 我将搜索指向C ++和2d,最终导致了DirectX / OpenGL 现在,据我所知,所有这些软件包对我来说都是在屏幕上绘制东西。这就是我现在真正关心的全部。声音不是必需的。输入可能可以用stdlib处理。 因此,对于尝试使用C ++创建基本游戏的初学者,您会推荐DirectX还是OpenGL?为什么?两者之间有哪些主要功能差异?哪个更有用?
12 c++  opengl  directx 

9
如何处理GUI元素?
注意:我计划制作自己的GUI系统。这对于学习,轻量级,只有我需要的部分,与游戏的联系等将非常有用。 我在考虑该怎么做。我的意思是: 单选按钮 在此处输入文本框 纽扣 滑杆 选框 我还没有考虑如何制作它们。但是更多的是他们将如何发展。 理念 我希望每个州都需要东西,所以几乎所有州都有一个元素容器。每个元素都是一个GUI件。 这些都有位置,图形等。 我更坚持的是他们的逻辑。 我的想法是,允许模块化和简单性是避免使用MainMenuStartButton。一个OptionsOneBackButton等等,而不是能够做Slider slide1; 或按钮启动; 取而代之的是,每个函数都将具有boost :: function到GUI名称空间中的函数,例如Gui :: StartButtonClick或GUI :: ColourSliderHover。 我只是想知道这是否会异常缓慢。 因此,有没有简单,简单的方法来制作游戏的GUI?没有Qt,wxWidgets或其他任何东西。
12 c++  architecture  gui 

2
在单独的线程中更新和渲染
我正在创建一个简单的2D游戏引擎,我想在不同的线程中更新和渲染精灵,以了解其完成方式。 我需要同步更新线程和渲染线程。当前,我使用两个原子标志。工作流程如下所示: Thread 1 -------------------------- Thread 2 Update obj ------------------------ wait for swap Create queue ---------------------- render the queue Wait for render ------------------- notify render done Swap render queues ---------------- notify swap done 在此设置中,我将渲染线程的FPS限制为更新线程的FPS。此外,我sleep()经常将渲染和更新线程的FPS限制为60,因此这两个等待函数不会等待太多时间。 问题是: 平均CPU使用率约为0.1%。有时,在四核PC中,它会上升25%。这意味着一个线程正在等待另一个线程,因为wait函数是一个带有test and set函数的while循环,而while循环将使用您的所有CPU资源。 我的第一个问题是:是否有另一种方式同步两个线程?我注意到std::mutex::lock在等待锁定资源时不要使用CPU,因此它不是while循环。它是如何工作的?我无法使用,std::mutex因为我需要将它们锁定在一个线程中并在另一个线程中解锁。 另一个问题是;由于该程序始终以60 FPS的速度运行,为什么有时它的CPU使用率会跃升到25%,这意味着两个等待中的一个正在等待很多?(两个线程都限制为60fps,因此理想情况下它们不需要太多同步)。 编辑:感谢所有答复。首先,我想说的是,我不会在每个帧开始渲染新线程。我从一开始就开始了update和render循环。我认为多线程可以节省一些时间:我具有以下功能:FastAlg()和Alg()。Alg()既是我的Update obj又是render obj,而Fastalg()是我的“发送渲染队列到” renderer”“。在一个线程中: Alg() //update FastAgl() Alg() //render …

1
如何将子弹物理学整合到我的游戏中?
我下载了在此处找到的发行文件,但不确定从哪里开始。在我的游戏中,我有多个椭圆和一个球体,我希望所有这些相互碰撞。(它们都有网格和相关的边界体积) 编辑-我只是意识到长方体实际上与AABB关联。我想至少得改变一下。 我需要遵循哪些步骤?

2
消除按键开始时的延迟
我正在做一个简单的游戏,遇到的问题之一是连续按下键时令人讨厌的延迟。 因此,基本上,例如,当我按下(很长时间)时Up,我的对象将向上移动1个单位,而不移动(大约1秒钟),然后连续向上移动1个单位(没有任何延迟)。 当前,我使用它来移动对象(SDL2): while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_UP: //Move object 1 unit up break; //Other unrelated things omitted } break; //Omitted other cases } } 我想要的是消除延迟,以便对象可以立即Up快速移动。有什么办法吗?
11 c++  sdl2  keyboard 

4
人们将如何为3D世界生成导航网格?
我正在尝试找到此问题的解决方案。我正在尝试以一种锁定为x,y地板坐标的顶点网格的形式构建导航网格,并以3D空间的正方形的形状。但是我在尝试找出解决方法时遇到了问题。 我尝试查看Recast库。这是一种非常健壮的方法,但是随着较大的地图和开放空间,它显然会变慢。我也不知道它们如何通过高度图为世界空间生成顶点和边缘。 我的下一个想法是做虚幻引擎3曾经做过的事情。 https://udn.epicgames.com/Three/NavigationMeshReference.html 使用光线投射生成网格。我不知道如何停止射线广播。 所以...我的下一个选择是包装盒,可能是包装盒。创建一个细分的体积,其大小为2的幂。将框与网格对齐,然后向下射矩形棱镜作为射线。如果它落在作为地面一部分的几何图形上,并且矩形未相交,则在此处保留正方形。并继续向下直到达到音量范围。为了检查是否需要链接边,我想我可以检查一下两对顶点之间的坡度是否在可行走坡度之内,如果为真,请合并它们。 我的主要问题是...这似乎不是最佳选择。不用考虑,多层过程的估计过程为O(N ^ 3)。哪个会变得很讨厌。 最后一点是用于自动创建这些正方形的矩形组。我不太确定该怎么做。虚幻实现通过斜率将它们分开。但是,我试图保持网格格式。因此,这并非完全必要。问题仍然在于创建较大的矩形图块以将路径查找过程拆分为每个图块的基础。磁贴不能太大也不能太小。 所以问题是... 生成此网状导航网格的有效方法是什么?制作图块的好方法是什么?
11 c++  tiles  navmesh 

2
如何使用SDL计算增量时间?
我听说您可以使用两个名为SDL_GetPerformanceCounter和SDL_GetPerformanceFrequency的函数来计算增量时间。我不确定它们如何完全工作,但我听说它有点类似于使用SDL_GetTicks() Uint64 NOW, LAST; double deltaTime = 0; while (somebool) { LAST = SDL_GetPerformanceCounter(); NOW = SDL_GetPerformanceCounter(); LAST = NOW; deltaTime = (NOW - LAST) / (double)SDL_GetPerformanceFrequency(); /**Rendering**/ } 我有这段代码,但是每当我打印出deltaTime或尝试使用它时,它总是等于一些真正的随机和疯狂数字。这个对吗?
11 c++  algorithm  sdl 

3
为什么可能会遇到大于1或小于0的纹理坐标
我正在研究有关文本texture mapping,在preparing to draw会议中,我读到: 定义纹理包裹参数。这将控制在遇到纹理坐标大于1.0或小于0.0时发生的情况: glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap); 其中wrap是: GL_REPEAT:指定如果遇到转换的纹理坐标小于0.0或大于1.0的情况,此模式将重复(即环绕)。 GL_CLAMP:指定模式将“固定”为0.0或1.0的值。 但是没有任何解释遇到这种纹理坐标的原因是什么? 例如,假设我刚刚绘制了一个矩形,并且想在其上应用图像作为纹理,是否有可能遇到这样的坐标?

4
如何在基于回合,基于距离的策略游戏中确定可能的运动范围?
我正在使用c ++和SFML-2.0创建一个二维的,基于回合的策略游戏。运动是基于距离的,而不是基于网格的,具有几个不同的三角形块,这些三角形块在给定的转弯中可以就位旋转或向前移动。 移动将以这样的方式进行:玩家选择棋子要移动到的位置,从而为棋子生成一条可能的路径。玩家确认自己的决定后,棋子将沿着该路径移动到所需位置。路径受到两个因素的限制:距离,一块东西可以走多远,考虑任何转弯(因此,如果有一条曲线,它将是沿着曲线的长度,而不是直接从一点到另一点);和转向角,即在移动(例如,从-30度到30度)时,该零件在任何(以及每个点)可以旋转多远。 我的问题是,我应该如何确定玩家可以选择将棋子移动到的潜在位置范围? 我不确定要在这里使用什么方程式和/或算法。我最初的计划过于复杂,以至于几乎无法实施,更不用说解释了,在这一点上,我因项目停滞而完全迷失了。 考虑到其转弯半径,如何确定设备可以移动的范围? 例如,在下图中。红线,蓝线和绿线的长度都相同。紫色圆圈表示单位可以移动的移动范围。(形状可能不准确,线条的长度实际上可能不相同,但您会明白的)

3
GNU GCC是否用于AAA游戏?
GNU GCC是一种非常常见的编译器,但似乎几乎没有人将其用于AAA游戏之类的较大项目。对我来说,它的工作原理很好,从来没有问题。但是我想知道为什么所有AAA游戏似乎都使用商业编译器(例如Intel Studio)吗?为什么这有关系?GNU GCC还优化了所有系统的代码,而不是仅针对Intel的代码,所以为什么它们会困扰于诸如Intel Studio之类的东西?
11 c++  game-industry  c  mingw 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.