小编Wil*_*iam的帖子

如何在Visual Studio中组织C ++大项目

我想通过将文件分组到目录中,将源代码分成多个文件夹,以更好地组织文件。

通常,有很多.h和.cpp文件,我通常会分开文件夹。我一直使用netbeans,但是最近我决定测试Visual Studio。

启动代码时(要遵循SDL游戏创建教程,这很困难),我开始在文件夹中组织源代码。在Visual Studio中,当我使用C ++时,可以看到添加过滤器以组织文件结构的选项,但是看不到添加文件夹的选项。

我可以在视觉上看起来像是文件夹结构的形式组织代码,但是当我检查文件是否混乱时,它们全都混在了程序的根目录下。菜单选项仅允许我添加过滤器:

显然,它是有组织的,但仅在视觉上,所有代码都保留在同一位置。

我想知道在Visual Studio中是否有一种方法可以将这些过滤器转换为文件夹,或者如何通过Visual Studio添加文件夹,因为我最终创建了文件夹并手动进行了重组。

并不是说我通常会有同名的文件,但是例如在那种环境下这是不可能的。除此之外,我认为如果您寻找某些东西,或者将来需要切换IDE,会变得很混乱,因为我相信这种逻辑组织不会在其他IDE(例如Eclipse,Netbeans等)中重用。

c++ design-patterns projects-and-solutions visual-studio

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

如何减少大量纹理的绘图调用次数?

我正在尝试为基于2D平铺的游戏开发地图,我正在使用的方法是将地图图像保存在大纹理(平铺集)中,并通过顶点着色器更新位置,在屏幕上仅绘制所需的平铺然而,在10x10地图上涉及100个glDrawArrays调用,通过任务管理器查看,这消耗了5%的CPU使用率和4%~5%的GPU,想象一下如果它是一个包含数十个调用的完整游戏,有一种方法可以优化这样,比如准备整个场景,只做一次平局,一次全部绘制,或者其他一些方法?

void GameMap::draw() {
  m_shader - > use();
  m_texture - > bind();

  glBindVertexArray(m_quadVAO);

  for (size_t r = 0; r < 10; r++) {
    for (size_t c = 0; c < 10; c++) {
      m_tileCoord - > setX(c * m_tileHeight);
      m_tileCoord - > setY(r * m_tileHeight);
      m_tileCoord - > convert2DToIso();

      drawTile(0);
    }
  }

  glBindVertexArray(0);
}

void GameMap::drawTile(GLint index) {
  glm::mat4 position_coord = glm::mat4(1.0 f);
  glm::mat4 texture_coord = glm::mat4(1.0 f);

  m_srcX = index * m_tileWidth;

  GLfloat clipX = m_srcX / m_texture - …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

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