小编Gha*_*nPL的帖子

如何将几个C/C++库合二为一?

我厌倦了在我的项目中添加十个链接库,或者要求其中八个使用我自己的链接库.我想使用现有的库,如libpng.a,libz.a,libjpeg.a,并将它们组合成一个.a库.那可能吗?如何组合.lib库?

c c++ archive

37
推荐指数
3
解决办法
3万
查看次数

为OpenGL纹理使用自己的mipmap创建算法是否有意义?

我想知道如果我使用自己的算法预生成它们而不是内置的自动算法,纹理mipmap的质量是否会更好.我可能会使用一个缓慢而漂亮的算法,比如Lanczos重新采样.

是否有意义?我会在现代显卡上获得任何质量提升吗?

opengl textures mipmaps

16
推荐指数
2
解决办法
8411
查看次数

在程序结束后没有释放的内存会发生什么?

重复:当你在malloc之后没有自由时真正发生了什么?

比方说,举个例子:

int main()
{
  char* test = new char[50000];
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

程序完成后分配的内存会发生什么变化?是否立即获得其他应用程序的释放?或者也许过了一段时间?或许它永远丢失在系统中?或者它是否被交换到磁盘永远不会返回到RAM?或者也许完全不同的东西?

我想知道主要3操作系统会发生什么:Windows(XP及以上,如果有任何差异),Linux,Mac OS X.

c c++ memory operating-system

12
推荐指数
3
解决办法
9384
查看次数

匿名类的虚拟表

我的代码中有类似的东西:

#include <iostream>
#include <cstdlib>

struct Base
{
  virtual int Virtual() = 0;
};

struct Child
{
  struct : public Base
  {
    virtual int Virtual() { return 1; }
  } First;

  struct : public Base
  {
    virtual int Virtual() { return 2; }
  } Second;
};

int main()
{
  Child child;
  printf("ble: %i\n", ((Base*)&child.First)->Virtual());
  printf("ble: %i\n", ((Base*)&child.Second)->Virtual());

  system("PAUSE");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望这会给出这个输出:

ble: 1
ble: 2
Run Code Online (Sandbox Code Playgroud)

当它在GCC下编译时(3.4.5我相信).

但是,在Visual Studio 2008下编译并运行它,可以得到:

ble: 2
ble: 2
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我给出Base-derived structs names(struct s1 : …

c++ virtual virtual-functions class anonymous-class

12
推荐指数
2
解决办法
807
查看次数

在iPhone上渲染到非2次幂纹理

是否可以在iPhone(2G及更早版本)上使用OpenGL ES 1.1渲染纹理?如果我将纹理绑定为渲染缓冲区,则它必须是渲染缓冲区的大小,而不是POT大小.但OpenGL ES 1.1要求纹理为POT.

也许它不能在ES 1.1上完成?

iphone opengl-es render-to-texture

12
推荐指数
2
解决办法
1万
查看次数

在ActionScript 3中绘制形状文本

有没有办法只使用ActionScript在DisplayObject或Shape中绘制文本?我可以在网上找到的唯一方法是创建一个TextField,但我不能将TF添加到DisplayObject或Shape.

编辑:

解决了感谢viatropos.

对于任何有兴趣的人:

DisplayObject工具IBitmapDrawable能够作为参数传递给传递draw一个的功能BitmapData对象,然后可以使用绘制graphics.beginBitmapFill.

var textfield:TextField = new TextField;
textfield.text = "text";

var bitmapdata:BitmapData = new BitmapData(theWidth, theHeight, true, 0x00000000);
bitmapdata.draw(textfield);

graphics.beginBitmapFill(bitmapdata);
graphics.drawRect(0, 0, theWidth, theHeight);
graphics.endFill();
Run Code Online (Sandbox Code Playgroud)

apache-flex text shape displayobject actionscript-3

9
推荐指数
1
解决办法
8724
查看次数

从流媒体存档中即时解压缩和提取文件

我正在编写一个类似于Flash和Java的浏览器插件,因为它一出现就开始下载文件(.jar或.swf).Java等待(我相信)直到加载整个jar文件,但Flash不会.我想要相同的能力,但使用压缩的存档文件.我想在下载解压缩所需的字节后立即访问存档中的文件.

例如,我将存档下载到内存缓冲区,只要第一个文件可以解压缩,我希望能够将其解压缩(也可以解压缩到内存缓冲区).

有没有支持这种格式/库?

编辑:如果可能的话,我更喜欢单个文件格式而不是单独的文件格式用于压缩和存档,如gz/bzip2和tar.

c++ compression streaming archive

6
推荐指数
2
解决办法
3889
查看次数

使用子类对象初始化的多态基类对象的数组

对不起复杂的标题.我有这样的事情:

class Base
{
public:
  int SomeMember;
  Base() : SomeMember(42) {}
  virtual int Get() { return SomeMember; }
};

class ChildA : public Base
{
public:
  virtual int Get() { return SomeMember*2; }
};

class ChildB : public Base
{
public:
  virtual int Get() { return SomeMember/2; }
};

class ChildC : public Base
{
public:
  virtual int Get() { return SomeMember+2; }
};

Base ar[] = { ChildA(), ChildB(), ChildC() };

for (int i=0; i<sizeof(ar)/sizeof(Base); i++)
{
  Base* ptr …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism virtual visual-studio-2005 initialization

6
推荐指数
1
解决办法
6608
查看次数

您希望在游戏编程DSL中看到哪些功能?

我和我的朋友正处于创建一个专门为游戏编程而设计的领域专用语言的第一阶段.

语言将相当低级,它将具有类似C的语法,可选的垃圾收集,并将面向具有很少内存或处理能力的系统(即Nintendo DS),但应该足够强大以便于PC发展很容易.它不是脚本语言,而是编译语言,但由于我们不想花费数月时间编写普通编译器,因此第一个实现基本上是一个LanguageName-to-C转换器,以TCC或GCC作为结束编译器.

现在,我对你们所有的游戏程序员都有一个问题:

你想用这种语言看到什么?哪些功能,实现和语法方面最适合它?要避免什么?

编辑:

我们已经想到的一些事情:

  • 基于状态的对象 - 对象可以存在于其中一个状态(或子状态)中
  • 事件和函数 - 事件不一定要被调用,并且可以冒泡
  • 有限的动态分配和指针支持 - 我们希望它尽可能安全
  • 支持对象合成(Hero由(动态)Actor,Hurtable,Steerable等组成)
  • 状态中的"资源",在状态的开始/结束时自动加载和卸载(例如,OpenGL纹理对象是资源)
  • 本地化和序列化的基本支持
  • 一种可快速解析的语法
  • 我们想使语言尽可能一致:一切都为值传递,每一个声明有可预测的语法(如function retType name(type arg) is (qualifier, list) { };无const,static,public,等限定词除了在预选赛名单的任何地方)

dsl programming-languages language-design

5
推荐指数
1
解决办法
412
查看次数

就地旋转2D矩形阵列

我有一个像这样的非正方形数组:

const int dim1 = 3, dim2 = 4;
int array[12] = { 1, 2, 3, 
                  4, 5, 6,
                  7, 8, 9,
                 10,11,12};
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为:

{3,6,9,12,
 2,5,8,11,
 1,4,7,10}
Run Code Online (Sandbox Code Playgroud)

也就是说,逆时针旋转/移动它(或顺时针方向,算法应该类似).

该算法应使用最小量的空间.我必须在极其受内存限制的环境中旋转图像,因此空间越小越好.速度不是一个大问题.

c++ arrays rotation in-place

5
推荐指数
1
解决办法
4493
查看次数