小编Zye*_*end的帖子

使用 OpenGL 的 2D Sprite 动画技术

我目前正在尝试使用 OpenGL 4 设置 2D 精灵动画。例如,我用 Gimp 设计了一个平滑旋转的球。大约有 32 个框架(4 行 8 个框架)。

我的目标是在 2D 纹理中创建精灵图集,并将精灵数据存储在缓冲区 (VBO) 中。我的精灵矩形将始终相同(即 rect(0,0,32,32) ),但每次帧索引递增时,我的纹理坐标都会发生变化。

我想知道如何修改坐标。

  1. 由于精灵图块存储在几行中,因此在着色器中管理起来似乎很困难。
  2. 使用 glBufferSubData() 修改缓冲区内的精灵纹理坐标?

我花了很多时间研究 OpenGL 1.x……几个月前我又回到了 OpenGL,但我意识到很多事情都发生了变化。我会尝试几种选择,但欢迎您的建议和经验。

c++ opengl animation vbo sprite

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

C++静态类成员未在*静态库中初始化*

我目前正面临着一个令人讨厌的C++问题.

实际上,我甚至不明白为什么在过去的20年里我没有面对它:(

在我目前的上下文中,我们大量使用与我们专有的静态库静态链接的c ++可执行文件(主要是在Linux嵌入式系统中).出于技术和优化原因,我们确实使用静态库.

事实上,在过去的几年里,我曾经创建了共享库...

所以我开始用静态类成员编写一些类.如下:

class Inner
{
public:
   Inner()
   {
     std::cout << "CTOR Inner" << std::endl;
   }
};

class A
{
static Inner _inner;

...
};

// in the .cpp

Inner A::_inner;

///////////////////////
Run Code Online (Sandbox Code Playgroud)

非常基本的用例,不是吗?

但在我的单元测试中,与lib链接,我无法std::cout在控制台中看到该语句.然而,如果我将我的类Inner和A移动到可执行源代码中......它可以正常工作.

我确信这是一个非常基本的问题,我意识到过去几年我从未面对过这个问题.这是与编译器有关的问题吗?请注意,我在Windows和Linux上测试了这两种情况(Debian,Gcc 4.9).

欢迎任何想法.

Z.

c++ static static-libraries

4
推荐指数
1
解决办法
686
查看次数

标签 统计

c++ ×2

animation ×1

opengl ×1

sprite ×1

static ×1

static-libraries ×1

vbo ×1