问题标签 [sdl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5406 浏览

c++ - 别人的库#define命名冲突

很难为这个问题想出一个合适的标题。反正...

我目前正在为SDL中的游戏开发GUI。当一个奇怪的错误出现时,我已经完成了软件绘图,并且正在开始使用它的 OpenGL 部分。我包含了“SDL/SDL_opengl.h”头文件并编译。它抛出“错误C2039:'DrawTextW':不是'GameLib::FontHandler'的成员”,这是一个足够简单的错误,但我没有任何称为DrawTextW的东西,只有FontHandler::DrawText。我搜索 DrawTextW 并在标题“WinUser.h”的#define 调用中找到它!

显然它用 DrawTextW 替换了我的 DrawText!我怎样才能阻止它像那样溢出到我的代码中?

更改我自己的函数名称是一件小事,但是像这样的命名冲突似乎很危险,我真的很想知道如何一起避免它们。

干杯!

0 投票
3 回答
6021 浏览

graphics - 如何避免在 Linux/X11 上使用 pygame 撕裂

我一直在玩 pygame(在 Debian/Lenny 上)。它似乎工作得很好,除了烦人的 blit 撕裂(全屏或窗口模式)。

我正在使用默认的 SDL X11 驱动程序。谷歌搜索表明 X11 不提供垂直同步功能(即使使用FULLSCREEN|DOUBLEBUF|HWSURFACE标志创建的显示)是 SDL 的一个已知问题,我应该改用“dga”驱动程序。

然而,运行

引发 pygame 初始化

(尽管xdpyinfo显示了 XFree86-DGA 扩展)。

那么:获得无撕裂垂直同步翻转的诀窍是什么?通过让这个 dga 工作或其他机制工作?

0 投票
1 回答
289 浏览

c - 如何使用 SDL 在乘法模式下对图像进行位图处理?

在 Pygame 中,surface.blit 有一个 special_flags 参数。这使您可以以不同于简单复制它们的方式组合像素。例如,乘法模式可让您将像素相乘。

如何使用 C 中的 SDL 实现此目的?我查看了 SDL 文档,但没有看到任何明显的方法。

0 投票
1 回答
179 浏览

c++ - 我正在尝试返回 SDL Mix_Music 数据类型,但我遇到了问题

我知道我可以公开所有的 Mix_Musics,而不用担心这个问题,但我仍然想了解如何去做。

0 投票
2 回答
4794 浏览

c - 为什么我不能对 SDL 纹理使用 colorkey?

我编写了这个简单的 C 程序来测试基本的 SDL 1.3 功能。一切正常,只有一个小问题。colorkey 不会被转换。我正在加载一个 8 位 PNG 精灵文件,其中调色板索引 #0 是背景颜色。我希望只看到显示的精灵,但我得到的是整个图像,包括背景颜色。

知道发生了什么或如何解决它吗?这是用 Visual C++ 2005 编写的。

编辑:这原来是由于 SDL_CreateTextureFromSurface 中的一个错误,我最终提交了一个补丁。

0 投票
1 回答
418 浏览

c++ - C++向量元素在不同时间访问时不同

我正在使用 Eclipse CDT 在 Ubuntu 9.04 上使用 SDL 和 OpenGL 开发 3D 游戏。我有一个类来保存每种类型的向量中的网格数据。比如Vertex、Normal、UVcoord(纹理坐标),以及一个面的向量。每个面都有 3 个 int 向量,它们保存其他数据的索引。到目前为止,我的游戏在以不错的速度渲染方面运行良好。但话又说回来,我在两个对象之间只有不到一百个顶点用于测试目的。

访问此数据的循环如下所示:

有一个循环调用renderFace()包含上述for循环的函数。减一是因为 Wavefront .obj 文件是 1 索引(而不是 c++ 0 索引)。无论如何,我发现一旦你有大约 3 万张左右的面孔,所有这些调用等都会将glVertex3f()游戏速度降低到大约 10 FPS。这是我不能允许的。所以我了解了顶点数组,它需要指向数组的指针。以 NeHe 教程为例,我继续使用我的oVertice班级和其他班级。其中只有floatsx、y、z 或 u、v。所以我在我的函数中添加了上面相同的OnLoad()函数来构建只是“ oVertice*”和类似的数组。

这是代码:

unsigned int temp变量用于调试目的。显然,我没有 oFace 的默认构造函数,它没有可以初始化的东西。无论如何,正如你所看到的,这几乎是完全相同的例程。我只是将数据添加到三个数组中,而不是调用 gl 函数。

这是踢球者:

我正在加载一个由三角形组成的典型立方体。

当我UV_Verts从函数访问向量的元素 16(索引 0)时,RenderFace()我得到 12。

但是当我从函数访问同一UV_Verts向量的元素 16(索引 0)时,OnLoad()我得到类似 3045472189

我感到很困惑。

有谁知道这是什么原因造成的?如果是这样如何解决它?

0 投票
7 回答
4743 浏览

optimization - 规划 2D 瓦片引擎 - 性能问题

正如标题所说,我正在充实 2D 平台游戏引擎的设计。它仍处于设计阶段,但我担心我会遇到渲染器问题,如果它们会成为问题,我想避免它们。

我将 SDL 用于我的基础库,并且游戏将设置为使用单个大数组Uint16来保存图块。这些索引到引擎的所有部分使用的第二个“图块定义”数组中,从碰撞处理到图形例程,这是我最关心的问题。

图形引擎设计为在 640x480 分辨率下运行,具有 32x32 瓦片。每帧每层绘制 21x16 个图块(用于处理滚动时显示的额外图块),最多可以绘制四个层。层只是单独的瓦片数组,但瓦片定义数组对所有四个层都是通用的。

我担心的是我希望能够利用这个引擎利用透明胶片和动画图块,而且由于我对设计不太熟悉,我担心我目前的解决方案效率太低运作良好。

我的目标 FPS 是每秒 60 帧,并且在绘制所有四个图层的情况下,我正在查看每秒需要绘制 21x16x4x60 = 80,640 个单独的 32x32px 块,以及精灵需要许多奇数大小的块,并且这似乎有点过分了。那么,有没有更好的方法来渲染我拥有的瓷砖地图设置?我正在寻找使用硬件加速来绘制瓷砖地图的可能性,如果它有助于提高性能。我也希望能够在稍微旧一点的电脑上运行这个游戏。

如果我在寻找太多,那么我认为降低引擎的能力是不可能的。

0 投票
3 回答
1000 浏览

c# - 我正在协助的一个项目是为客户使用 freeglut。我应该另外建议吗?

我参与了一个为其客户使用freeglut(基于长期失效的过剩)的开发项目。

客户端最终将允许与大型 3d 环境进行完全交互。我应该让 freeglut 继续开发(甚至可能)还是我应该建议他们使用另一种替代方案,例如 libsdl、opentk 甚至 axiom。

我不是图形专家,但我觉得 freeglut 可能是一个有限的选择。

最有说服力的答案(赞成或反对)将被认可。

编辑:有几点要说...

  • 该项目已经在使用 Tao 框架。
  • DirectX 和 XNA 不是选项(即:必须使用诸如 freeglut 或 libsdl 之类的东西)。

我确实进行了研究,发现 freeglut 再次处于积极开发中,并且他们正在等待发布。这并没有改变我的感觉,即它可能仍然是一个潜在的有限选择。

我的问题不在于它是如何完成的,而是关于 freeglut 是否仍然是可能会变大的东西的可行选择,以及是否有更多“现代”解决方案可以稍微简化开发。

编辑:如果其他替代方案具有更好的多线程支持(不是用于渲染对象,而是用于处理数据等),那将有所帮助。

编辑:更详细一点......客户端必须至少在linux和windows中工作。

谢谢!

0 投票
3 回答
26298 浏览

c++ - 使用 SDL 旋转图像的最佳方法?

我正在构建一个游戏,主角的手臂将跟随鼠标光标,因此它会非常频繁地旋转。旋转它的最佳方法是什么?

0 投票
1 回答
1314 浏览

c++ - 我需要有关如何使用 SDL 使用 OpenGL 旋转图像的帮助

我正在制作游戏,角色的手臂将不断旋转,因为它将跟随鼠标光标。我以前从未使用过openGL,我需要一些帮助才能开始。如果有人知道任何可以开始学习的好网站以及专门包含轮换的网站,请告诉我。

我已经访问过 NeHe 并进入了那个轮换教程,但是在尝试完成其他基本教程之后,我仍然觉得它很困惑,所以对这个主题的一些澄清也将不胜感激。

另外,我不知道这是否会改变事情,但我需要围绕玩家的“肩膀”旋转,所以我需要知道如何让手臂围绕这一点旋转。