Questions tagged «c++»

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

1
哪个OpenGL的c / c ++模型动画库[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 6年前关闭。 我是游戏开发的新手,以前玩过xna,现在才学习OpenGL&c,我很想知道那里有哪些基于c / c ++的模型动画库,您会推荐哪个?我还没有想到任何特定的模型格式,但是可能是像Blender这样的免费建模工具所支持的格式。
10 opengl  c++  models  c 

2
在C ++中为体素引擎存储体素
我正在尝试编写一个小的体素引擎,因为它很有趣,但是却很难找到存储实际体素的最佳方法。我知道我将需要某种类型的块,因此我不需要在内存中拥有整个世界,而且我知道我需要以合理的性能渲染它们。 我了解了八叉树,据我所知,它以1个多维数据集开头,在那个多维数据集中可以再有8个多维数据集,在所有这8个多维数据集中可以是另外8个多维数据集,等等。但是我认为这不适合我的体素引擎,因为我的体素多维数据集/项目都将完全相同。 因此,另一种选择是只创建一个大小为16 * 16 * 16的数组,并将其作为一个大块,然后用项目填充它。没有零件的零件的值将为0(0 =空)。但是,这恐怕会浪费大量内存,而且速度不会很快。 然后另一个选择是每个块的向量,并用多维数据集填充它。多维数据集在块中保持其位置。这样可以节省内存(没有空气障碍),但是在特定位置查找多维数据集要慢得多。 所以我真的找不到一个好的解决方案,我希望有人可以帮助我。那么,您将使用什么?为什么? 但是另一个问题是渲染。使用OpenGL读取每个块并将其发送到GPU很容易,但是非常慢。每块生成一个网格会更好,但是这意味着每次我打破一个块时,我都必须重建整个块,这可能会花费一些时间,导致轻微但明显的打ic,我显然也不想这样做。因此,这将更加困难。那么我该如何渲染立方体呢?只需在每个块的一个顶点缓冲区中创建所有多维数据集,然后渲染该多维数据集,然后尝试将其放入另一个线程中,或者有其他方法吗? 谢谢!
9 c++  voxels 

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

2
如何通过缓存友好的组件存储安全地支持组件到对象的通信?
我正在制作一个使用基于组件的游戏对象的游戏,但是我很难为每个组件实现一种与其游戏对象进行通信的方式。我将不解释所有内容,而是解释相关示例代码的每个部分: class GameObjectManager { public: //Updates all the game objects void update(Time dt); //Sends a message to all game objects void sendMessage(Message m); private: //Vector of all the game objects std::vector<GameObject> gameObjects; //vectors of the different types of components std::vector<InputComponent> input; std::vector<PhysicsComponent> ai; ... std::vector<RenderComponent> render; } 在GameObjectManager拥有所有的游戏对象及其组件。它还负责更新游戏对象。它通过按特定顺序更新分量向量来实现。我使用向量而不是数组,因此可以同时存在的游戏对象数量实际上没有限制。 class GameObject …

2
如何将GLFW的键盘输入转发到另一个对象?
我在尝试使用GLFW3在另一个类中执行键盘事件时遇到麻烦。我遇到的问题是GLFW3使用静态函数进行输入,如下所示: static UI u; ... ... static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { u.controls(window, key, action); } u也是静态的,控件保留WSAD键的输入(这是我获取键事件的唯一方法)。从这里开始,按下一个键将显示在控制台窗口中按下哪个键。我遇到的麻烦是试图使用按下的键来操纵另一个类中的变量。 我还有一个名为MainMenu的类,该类具有该功能。update().是否可以在此函数中使用UI类?
9 opengl  c++  keyboard  glfw 

3
许多小型多态类(用作属性,消息或事件)的灵活替代方法
我的游戏中有两个类非常有用,但逐渐变得很痛苦。消息和属性(属性本质上是一个组件)。 它们都从基类派生并包含一个静态ID,因此系统只能关注他们想要的对象。效果很好...除了... 随着游戏的扩展,我一直在不断开发新的消息类型和属性类型。每次我需要编写2个文件(hpp和cpp)和一堆样板文件,以获得本质上是classID和一种或两种标准数据类型或指针。 它开始使玩转和测试新想法成为真正的琐事。我希望当我想创建一个新的消息或属性类型时,我希望能够键入类似 ShootableProperty: int gunType, float shotspeed; ItemCollectedMessage: int itemType; 而不是创建头文件和cpp文件,而是编写一个构造函数,包括父类等。 大约20到40行(包括警卫和其他所有内容)在我脑海中逻辑上是1或2行。 是否有一些编程模式可以解决此问题? 用脚本(我一无所知)呢?有没有办法定义一堆几乎相同的类? 这正是一个类的样子: // Velocity.h #ifndef VELOCITY_H_ #define VELOCITY_H_ #include "Properties.h" #include <SFML/System/Vector2.hpp> namespace LaB { namespace P { class Velocity: public LaB::Property { public: static const PropertyID id; Velocity(float vx = 0.0, float vy = …

2
为什么公司仍使用旧版本的Visual Studio?
我了解为什么使用C ++。这不是这个问题的意思。 当我安装游戏时,通常使用Steam(这些天我几乎只使用Steam)会安装可分发的C ++ 2005 Runtime。 我的问题是为什么会这样?八年前发布的运行时仍然流行的原因是什么?我最近安装的某些游戏的年龄稍大一些,因此假设开发时间为几年,则可以证明它是当时已经过尝试和测试的标准。 为什么游戏公司不使用较新版本的VC ++运行时?
9 c++ 

2
如何将Editline用于游戏机控制台?
我想向我正在创建的C ++游戏中添加游戏机控制台。尽管渲染了控制台并解析了我擅长的命令,但是文本输入和编辑方面(例如,处理向左/向右键,退格键等)似乎要花很多精力,我宁愿花在更有趣的事情上。 我设法找到了一个名为Editline的库,该库可处理具有历史记录和自动完成功能的控制台式文本输入的精髓,但是我不确定如何将其与游戏接口-特别是所有示例我发现使用标准输入和输出句柄,readline()它本身是一个阻塞调用。我需要能够提供自己的输入并将控制台呈现为自己的输出,并且还需要确保游戏循环继续运行。 我应该怎么做呢?
9 c++  text-based 

5
如何在不重新启动的情况下从选项屏幕更新显示设置?
我目前正在使用Allegro 5和boost在C ++ 11中创建2D RPG。 我的目标是在“选项”菜单中更改选项后以某种方式更新我的游戏设置。我不想强迫用户重新启动我的游戏。其他游戏在更改分辨率或从全屏模式切换到全屏模式时不需要重启,因此我的游戏也不需要重启。请在下面查看系统的简化视图。 请注意,我不一定要直接从OptionsScreen调用我的Game对象。虚线仅仅是为了说明我要达到的效果。当在系统的不同部分中更改选项时,以某种方式导致游戏更新。 详细说明 ScreenManager包含GameScreen当前存在的所有对象的列表。这些将是游戏中的各种屏幕,包括弹出窗口。该设计或多或少地遵循C#/ XNA中的游戏状态管理示例。 在ScreenManager包含了我的参考Game对象。该Game对象初始化和修改游戏的设置。如果要更改分辨率,请全屏播放或静音,这是我在Game课堂上要做的。 但是,OptionsScreen当前无法访问Game类。见下图: GameScreen可以发信号三个事件onFinished,onTransitionStart和onTransitionEnd。没有,onOptionsChanged因为只有一个屏幕可以做到这一点。ScreenManager无法为此设置事件处理,因为它将所有屏幕都处理为GameScreen。 我的问题是,如何更改设计以使OptionsMenu中的更改不需要重新启动,而是立即更改?我最好Game在单击“应用”按钮后请求更新我的对象。

2
D3D / DXGI处理全屏过渡
我有一个D3D11应用程序,我想添加适当的全屏支持。现在,我可以让DXGI为我将窗口切换到全屏状态,并且给人的印象是DXGI会处理使交换链翻转前后缓冲所需的一切,而不是消隐它们。 但是,在多监视器设置中,让DXGI执行切换似乎不可靠-切换大量时间后,辅助屏幕完全保持黑色,没有明显的原因或模式。 它可以采取几次来回切换之前,我全屏窗口和桌面的其余部分显示的其他屏幕上。 显然我并不孤单,《战地风云3》和《魔兽世界》似乎对很多人都有类似的问题。 现在,真正的问题是:我猜想,即使是那些AAA游戏开发公司也无法做到这一点,所以我最大的希望是自己以某种方式执行全屏切换。 我有什么办法可以将窗口/交换链提升为适当的,缓冲区翻转的全屏模式?

3
Windows 8仍然支持DirectX 9吗?
Windows 8是否支持DirectX 9?因为我正在浏览一些用C ++和DirectX 9编写的Windows 8样例。不是那样,就像我知道的那样(请看这里http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2)。例如,使用COM简化DirectX: ComPtr<ID3D11Device1> dev; ComPtr<ID3D11DeviceContext1> devcon; 这很奇怪,因为我以旧的方式知道它: ID3D11Device *dev; ID3D11DeviceContext *devcon; (我希望你明白我想说的) 我希望它不会因为发布了新的操作系统而完全改变。
9 c++  directx  windows 

1
gluLookAt如何工作?
据我了解, gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 等效于: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); 但是当我打印出ModelView矩阵时,对的调用glTranslatef()似乎无法正常工作。这是代码片段: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

3
基于组件的设计:处理对象交互
我不确定对象在基于组件的设计中如何精确地处理其他对象。 说我有Obj课。我做: Obj obj; obj.add(new Position()); obj.add(new Physics()); 那么,我又如何才能使另一个对象不仅使球移动,而且还要应用那些物理方法。我不是在寻找实现细节,而是抽象地讲对象如何通信。在基于实体的设计中,您可能只有: obj1.emitForceOn(obj2,5.0,0.0,0.0); 为了更好地掌握组件驱动的设计以及如何进行基本操作的任何文章或说明都将非常有帮助。

3
编写动画库(IK和FK)的必要知识是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我找不到任何好的动画库,发现的库确实很老而且已经停产,但是我注意到这些库相对较小,因此我正在考虑自己编写一个库:我应该从哪里开始?有哪些基本知识?有关于这本书吗? 高度赞赏有关动画的良好文件格式的一些其他说明。 我正在使用C ++。

3
如何像Minecraft一样处理Block World
我想写一个像《我的世界》这样的带有方块世界的简单游戏。我的理论问题是在播放期间处理此块信息的最佳方法是什么。我的第一个想法是一个庞大的数组,但是我认为这将导致内存不足。也许我只需要在播放器附近加载块。 如何处理从文件中加载所需的块信息并仅将所需的信息保留在内存中?

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.