minecraft吧 关注:2,567,985贴子:32,079,179

【C++配OpenGL】 编程造MC!!!

取消只看楼主收藏回复


框架镇楼


IP属地:美国1楼2016-02-13 20:54回复
    static const GLfloat VC[][3] = {
    { -0.5f, 0.5f, 0.5f }, //A
    { -0.5f,-0.5f, 0.5f },//B
    { 0.5f,-0.5f, 0.5f },//C
    { 0.5f, 0.5f, 0.5f },//D
    { -0.5f, 0.5f,-0.5f }, //E
    { -0.5f,-0.5f,-0.5f },//F
    { 0.5f,-0.5f,-0.5f },//G
    { 0.5f, 0.5f,-0.5f },//H
    };
    static const GLint VF[][4] = {
    0,1,2,3,//front
    3,2,6,7,//right
    7,6,5,4,//back
    4,5,1,0,//left
    1,5,6,2,//bottom
    4,0,3,7 //top
    };
    static const GLfloat TF[][2] = {
    0,1,
    0,0,
    1,0,
    1,1
    };
    这是方块的绘制函数,TF是纹理


    IP属地:美国7楼2016-02-13 20:57
    收起回复
      2026-01-02 21:35:05
      广告
      不感兴趣
      开通SVIP免广告
      目前做了这些,背面剔除,相邻面剔除还有基本WS前后移动


      IP属地:美国10楼2016-02-13 21:02
      回复

        临近面剔除的效果,里面是空心的


        IP属地:美国11楼2016-02-13 21:04
        收起回复
          if (key == GLFW_KEY_W)
          {
          playerPosX += cos(playerRotY*piover180)*0.3;
          playerPosZ += sin(playerRotY*piover180)*0.3;
          }
          if (key == GLFW_KEY_S)
          {
          double head = playerRotY;
          playerPosX -= cos(playerRotY*piover180)*0.3;
          playerPosZ -= sin(playerRotY*piover180)*0.3;
          }
          用的是GLFW, WS移动代码原理从某NEHE那里抄的


          IP属地:美国12楼2016-02-13 21:05
          收起回复
            EasyMinecraft 0.01!!!
            http://pan.baidu.com/s/1c1c9RGks
            退出按EXC!!!!


            IP属地:美国19楼2016-02-13 21:20
            收起回复
              忘记说了shift 下降。。
              空格 上升


              IP属地:美国20楼2016-02-13 21:25
              回复

                临近面有问题,查BUG中


                IP属地:美国53楼2016-02-14 23:51
                收起回复
                  2026-01-02 21:29:06
                  广告
                  不感兴趣
                  开通SVIP免广告
                  glBegin(GL_QUADS);
                  for (int i = 0;i < 6;++i)
                  for (int j = 0;j < 4;++j)
                  {
                  //Air except
                  if (chunk[x][y][z] != 0)
                  {
                  //Near Face except
                  if (((i == 0 && chunk[x][y][z + 1] == 0) ||
                  (i == 1 && chunk[x + 1][y][z] == 0) ||
                  (i == 2 && chunk[x][y][z - 1] == 0) ||
                  (i == 3 && chunk[x - 1][y][z] == 0) ||
                  (i == 4 && chunk[x][y - 1][z] == 0) ||
                  (i == 5 && chunk[x][y + 1][z] == 0))
                  ||//extreme except
                  (x == chunkSizeX - 1 || x == 0) ||
                  (y == chunkSizeY - 1 || y == 0) ||
                  (z == chunkSizeZ - 1 || z == 0))
                  {
                  glColor3f(SF[i], SF[i], SF[i]);
                  glVertex3fv(VC[VF[i][j]]);
                  glTexCoord2fv(TF[j]);
                  }
                  }
                  }
                  glEnd();
                  @qiaozhanrong 我是这样的,一个chunk数组


                  IP属地:美国61楼2016-02-15 19:47
                  收起回复

                    做了一个伪阴影


                    IP属地:美国62楼2016-02-15 19:54
                    回复

                      剔除的bug解决了,
                      顺便把边界也剔除了,以后无限世界的时候边界用不到


                      IP属地:美国63楼2016-02-15 20:22
                      收起回复
                        v0.02
                        http://pan.baidu.com/s/1qX5s6za
                        更新:
                        移动!!!
                        阴影!!!
                        重力!!!


                        IP属地:美国66楼2016-02-15 21:02
                        收起回复
                          之前一段时间都很忙,来不及更新。。
                          现在开更
                          楼主数学基础一般,为了搞定这个花了不少时间。


                          IP属地:美国76楼2016-02-19 20:19
                          收起回复
                            这个XYZ得出来的是视角选定的方块的位移值
                            就是从当前位置做一条到XYZ的线,然后线如果碰到方块就检测到了,没有则继续加长这条线


                            IP属地:美国77楼2016-02-19 20:21
                            回复
                              2026-01-02 21:23:06
                              广告
                              不感兴趣
                              开通SVIP免广告

                              测试时的标记,红线是X


                              IP属地:美国78楼2016-02-19 20:22
                              回复