minecraft吧 关注:2,567,994贴子:32,075,668

回复:【C++配OpenGL】 编程造MC!!!

只看楼主收藏回复

为了给予自己足够的安慰,先把地形用的区块16*16*256调成16*16*16
在搞多线程之前做了一个区块框架,可以把区块显示出来


IP属地:美国202楼2017-01-27 23:43
回复
    新年快乐!


    IP属地:美国203楼2017-01-28 00:02
    回复
      2026-01-02 23:11:59
      广告
      不感兴趣
      开通SVIP免广告
      多线程生成大概做出来了
      生成线程不停地从一个装满区块指针的地图里把要刷新的区块揪出来,生成数据,然后扔进缓冲区里。
      主线程不停地把缓冲区数据传到Opengl那儿并绘制
      缓冲区模拟了双缓冲区,生成线程用后缓冲区,主线程用前缓冲区,生成线程每次完成更新操作就将缓冲区互换。
      这样可以实现不同步生成,虽然速度不是很快,还会出现随机的访问冲突。。


      IP属地:美国204楼2017-01-28 00:03
      回复
        怎么弄的


        来自Android客户端205楼2017-01-28 00:03
        收起回复
          长期关注的粉丝


          IP属地:广东来自Android客户端206楼2017-01-28 11:51
          收起回复
            后排贩卖垃圾食品


            IP属地:北京来自Android客户端207楼2017-01-28 12:02
            回复
              随机的访问冲突解决了,有些地方没加多线程锁。
              因为主线程和生成线程是同时运行的,有些共享的资源会冲突
              比如装满区块指针的地图,生成线程正用它更新到一半呢,主线程就急着拿去画了,访问能不冲突么
              在生成线程更新的时候加上锁,这样主线程就要等,直到更新完了以后就解锁
              (这样能用,但是主线程要等啊!这等一等的功夫几十fps就没了哈)


              IP属地:美国208楼2017-01-28 12:06
              回复
                围观


                IP属地:北京来自Android客户端209楼2017-01-28 12:08
                回复
                  2026-01-02 23:05:59
                  广告
                  不感兴趣
                  开通SVIP免广告
                  在做物品栏,破坏建造方块之前先搞定纹理贴图和区块保存


                  IP属地:美国210楼2017-01-28 12:08
                  回复
                    建议搬到图文吧


                    IP属地:福建来自Android客户端211楼2017-01-28 12:13
                    回复
                      然而多线程好坑。
                      每次程序关闭时,程序又发生冲突
                      花了大半天debug, 发现问题是这样的:
                      主线程没办法把生成线程关闭,所以主线程就在自己结束时自作主张地把共享的资源都回收掉了
                      可生成线程还在工作,然后在处理“空气”时便报错了
                      解决方案:主线程用一个bool控制生成线程,结束时把改bool变量,通知生成线程收工,等生成线程停止工作以后再回收资源


                      IP属地:美国213楼2017-01-28 21:41
                      回复
                        制作纹理贴图中,纹理贴图就是把方块都集中在一块儿绘制
                        比如说一个方块材质64*64大小,那可以把所有材质8个一行,一共8列的方式存储在256*256的图片里
                        绘制的时候只要绑定材质一次,便可以提高效率



                        IP属地:美国214楼2017-01-29 08:35
                        回复
                          每几秒改变一次材质,感觉蛮漂亮的。。。


                          IP属地:美国215楼2017-01-29 08:36
                          回复
                            有白边。。。


                            IP属地:美国216楼2017-01-29 09:27
                            收起回复