小编Dan*_*ani的帖子

在优秀的OOP设计中我们应该使用什么而不是"经理"类?

我在设计游戏引擎时遇到了麻烦.例如:

当我在参考资料中思考时,我认为在ResourceManager类中管理我的引擎上的资源.

这个课有几个职责:

  • 加载资源.
  • 按标识符映射资源.
  • 确保资源仅加载一次.
  • 免费使用未使用的资源(使用智能指针).

这对我有用,但我已经阅读了每个OOP设计教程,管理者是具有高耦合低内聚的模糊类.我理解这一点,并且我同意,但我几乎在整个互联网上搜索了一个明确的例子,说明了管理者真正的替代方案,但我没有找到它.

有些人解释说,例如,ResourceManager应该分成更小的类:ResourceFactory,ResourceCollection,ResourceCache,ResourceFacade ......

我知道所有这些设计模式(工厂,集合,外观等)但我实际上并不了解如何将其加入以创建(易于管理)资源管理系统.

我的问题是:是否有一些教程或文档有明确的例子?有人能解释一下这个系统的例子吗?如果你能用C++或其他类似的语言写一个小例子,我会感谢你的.

在此先感谢您的帮助!

oop design-patterns

35
推荐指数
4
解决办法
8471
查看次数

glm中矩阵值的顺序不正确?

我开始使用GLM库通过OpenGL 3和GLSL进行数学运算.我需要一个正交投影来绘制2D图形,所以我写了这个简单的代码:

glm::mat4 projection(1.0);
projection = glm::ortho( 0.0f, 640.0f, 480.0f, 0.0f, 0.0f, 500.0f);
Run Code Online (Sandbox Code Playgroud)

在屏幕上打印glm :: ortho创建的值我得到:

 0.00313   0.00000   0.00000   0.00000
 0.00000  -0.00417   0.00000   0.00000
 0.00000   0.00000  -0.00200   0.00000
-1.00000   1.00000  -1.00000   1.00000
Run Code Online (Sandbox Code Playgroud)

据我所知,这不是OpenGL中值的正确顺序,因为将此矩阵乘以位置向量将忽略所有转换值.

我用着色器和一些原语测试了那个矩阵,我只得到一个空白的屏幕.但如果我手动修改矩阵如下,它可以正常工作:

 0.00313   0.00000   0.00000  -1.00000
 0.00000  -0.00417   0.00000   1.00000
 0.00000   0.00000  -0.00200  -1.00000
 0.00000   0.00000   0.00000   1.00000
Run Code Online (Sandbox Code Playgroud)

此外,查看"glm/gtc/matrix_transform.inl"文件中的"ortho"函数:

template <typename valType>
inline detail::tmat4x4<valType> ortho(
    valType const & left,
    valType const & right,
    valType const & bottom,
    valType const & top,
    valType const & zNear,
    valType …
Run Code Online (Sandbox Code Playgroud)

opengl glsl matrix glm-math

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

标签 统计

design-patterns ×1

glm-math ×1

glsl ×1

matrix ×1

oop ×1

opengl ×1