minecraft没有shader如果弃用固定管线改成Shader会很困难吗

在 1.9 的更新记录里看到计划的特性,当然这个其实是去年九月的消息,而且 TheMogMiner 已经离开 Mojang 了(估计这个计划已经弃坑了)。我想知道现在 Minecraft 如果想从固定管线改成 Modern OpenGL 使用 Shader 的话会非常困难吗?之前在里看到 GlStateManager 创立的目的就是为了以后的Shader做准备,并且说 1.8 仅仅是一个没完成的过渡版本,不知道能不能为回答提供一些帮助。
弱弱的问一句光影整合包是如何实现的……
有点难。如果他们只是打算让代码兼容modern opengl core,那需要重写很多代码。如果他们打算让代码彻底利用modern opengl的特性,那需要重写更多代码。&br&让我们先看看简单地让mc重写成GL3.2的形式需要的代码量。&br&&em&注意:以下代码均为反编译的1.7.10代码,请勿当作源代码或1.8代码&/em&&br&&em&不过由于java的特性类结构是不会变的&/em&&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&class&/span& &span class=&nc&&Gui&/span&
&span class=&kd&&public&/span& &span class=&kd&&static&/span& &span class=&kt&&void&/span& &span class=&nf&&drawRect&/span&&span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&p_73734_0_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73734_1_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73734_2_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73734_3_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73734_4_&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&j1&/span&&span class=&o&&;&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&n&&p_73734_0_&/span& &span class=&o&&&&/span& &span class=&n&&p_73734_2_&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&j1&/span& &span class=&o&&=&/span& &span class=&n&&p_73734_0_&/span&&span class=&o&&;&/span&
&span class=&n&&p_73734_0_&/span& &span class=&o&&=&/span& &span class=&n&&p_73734_2_&/span&&span class=&o&&;&/span&
&span class=&n&&p_73734_2_&/span& &span class=&o&&=&/span& &span class=&n&&j1&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&n&&p_73734_1_&/span& &span class=&o&&&&/span& &span class=&n&&p_73734_3_&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&j1&/span& &span class=&o&&=&/span& &span class=&n&&p_73734_1_&/span&&span class=&o&&;&/span&
&span class=&n&&p_73734_1_&/span& &span class=&o&&=&/span& &span class=&n&&p_73734_3_&/span&&span class=&o&&;&/span&
&span class=&n&&p_73734_3_&/span& &span class=&o&&=&/span& &span class=&n&&j1&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&kt&&float&/span& &span class=&n&&f3&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73734_4_&/span& &span class=&o&&&&&/span& &span class=&mi&&24&/span& &span class=&o&&&&/span& &span class=&mi&&255&/span&&span class=&o&&)&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&n&&F&/span&&span class=&o&&;&/span&
&span class=&kt&&float&/span& &span class=&n&&f&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73734_4_&/span& &span class=&o&&&&&/span& &span class=&mi&&16&/span& &span class=&o&&&&/span& &span class=&mi&&255&/span&&span class=&o&&)&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&n&&F&/span&&span class=&o&&;&/span&
&span class=&kt&&float&/span& &span class=&n&&f1&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73734_4_&/span& &span class=&o&&&&&/span& &span class=&mi&&8&/span& &span class=&o&&&&/span& &span class=&mi&&255&/span&&span class=&o&&)&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&n&&F&/span&&span class=&o&&;&/span&
&span class=&kt&&float&/span& &span class=&n&&f2&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73734_4_&/span& &span class=&o&&&&/span& &span class=&mi&&255&/span&&span class=&o&&)&/span& &span class=&o&&/&/span& &span class=&mf&&255.0&/span&&span class=&n&&F&/span&&span class=&o&&;&/span&
&span class=&n&&Tessellator&/span& &span class=&n&&tessellator&/span& &span class=&o&&=&/span& &span class=&n&&Tessellator&/span&&span class=&o&&.&/span&&span class=&na&&instance&/span&&span class=&o&&;&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnable&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_BLEND&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisable&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_TEXTURE_2D&/span&&span class=&o&&);&/span&
&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&glBlendFunc&/span&&span class=&o&&(&/span&&span class=&mi&&770&/span&&span class=&o&&,&/span& &span class=&mi&&771&/span&&span class=&o&&,&/span& &span class=&mi&&1&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glColor4f&/span&&span class=&o&&(&/span&&span class=&n&&f&/span&&span class=&o&&,&/span& &span class=&n&&f1&/span&&span class=&o&&,&/span& &span class=&n&&f2&/span&&span class=&o&&,&/span& &span class=&n&&f3&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&startDrawingQuads&/span&&span class=&o&&();&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertex&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_0_&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_3_&/span&&span class=&o&&,&/span& &span class=&mf&&0.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertex&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_2_&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_3_&/span&&span class=&o&&,&/span& &span class=&mf&&0.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertex&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_2_&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_1_&/span&&span class=&o&&,&/span& &span class=&mf&&0.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertex&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_0_&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p_73734_1_&/span&&span class=&o&&,&/span& &span class=&mf&&0.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&draw&/span&&span class=&o&&();&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnable&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_TEXTURE_2D&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisable&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_BLEND&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&kd&&public&/span& &span class=&kt&&void&/span& &span class=&nf&&drawTexturedModalRect&/span&&span class=&o&&(&/span&&span class=&kt&&int&/span& &span class=&n&&p_73729_1_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73729_2_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73729_3_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73729_4_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73729_5_&/span&&span class=&o&&,&/span& &span class=&kt&&int&/span& &span class=&n&&p_73729_6_&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&kt&&float&/span& &span class=&n&&f&/span& &span class=&o&&=&/span& &span class=&mf&&0.&/span&&span class=&n&&F&/span&&span class=&o&&;&/span&
&span class=&kt&&float&/span& &span class=&n&&f1&/span& &span class=&o&&=&/span& &span class=&mf&&0.&/span&&span class=&n&&F&/span&&span class=&o&&;&/span&
&span class=&n&&Tessellator&/span& &span class=&n&&tessellator&/span& &span class=&o&&=&/span& &span class=&n&&Tessellator&/span&&span class=&o&&.&/span&&span class=&na&&instance&/span&&span class=&o&&;&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&startDrawingQuads&/span&&span class=&o&&();&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_1_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_2_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_6_&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&zLevel&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_3_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_4_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_6_&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f1&/span&&span class=&o&&));&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_1_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_5_&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_2_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_6_&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&zLevel&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_3_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_5_&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_4_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_6_&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f1&/span&&span class=&o&&));&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_1_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_5_&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_2_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&zLevel&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_3_&/span& &span class=&o&&+&/span& &span class=&n&&p_73729_5_&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_4_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f1&/span&&span class=&o&&));&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&((&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_1_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_2_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&zLevel&/span&&span class=&o&&,&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_3_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f&/span&&span class=&o&&),&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)((&/span&&span class=&kt&&float&/span&&span class=&o&&)(&/span&&span class=&n&&p_73729_4_&/span& &span class=&o&&+&/span& &span class=&mi&&0&/span&&span class=&o&&)&/span& &span class=&o&&*&/span& &span class=&n&&f1&/span&&span class=&o&&));&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&draw&/span&&span class=&o&&();&/span&
&span class=&o&&}&/span&
&span class=&kd&&class&/span& &span class=&nc&&Tessellator&/span&
&span class=&kd&&public&/span& &span class=&kt&&int&/span& &span class=&nf&&draw&/span&&span class=&o&&()&/span&
&span class=&o&&{&/span&
&span class=&k&&if&/span& &span class=&o&&(!&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&isDrawing&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&k&&throw&/span& &span class=&k&&new&/span& &span class=&n&&IllegalStateException&/span&&span class=&o&&(&/span&&span class=&s&&&Not tesselating!&&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&else&/span&
&span class=&o&&{&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&isDrawing&/span& &span class=&o&&=&/span& &span class=&kc&&false&/span&&span class=&o&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&offs&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&o&&;&/span&
&span class=&k&&while&/span& &span class=&o&&(&/span&&span class=&n&&offs&/span& &span class=&o&&&&/span& &span class=&n&&vertexCount&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&vtc&/span& &span class=&o&&=&/span& &span class=&n&&Math&/span&&span class=&o&&.&/span&&span class=&na&&min&/span&&span class=&o&&(&/span&&span class=&n&&vertexCount&/span& &span class=&o&&-&/span& &span class=&n&&offs&/span&&span class=&o&&,&/span& &span class=&n&&nativeBufferSize&/span& &span class=&o&&&&&/span& &span class=&mi&&5&/span&&span class=&o&&);&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&intBuffer&/span&&span class=&o&&.&/span&&span class=&na&&clear&/span&&span class=&o&&();&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&intBuffer&/span&&span class=&o&&.&/span&&span class=&na&&put&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&rawBuffer&/span&&span class=&o&&,&/span& &span class=&n&&offs&/span& &span class=&o&&*&/span& &span class=&mi&&8&/span&&span class=&o&&,&/span& &span class=&n&&vtc&/span& &span class=&o&&*&/span& &span class=&mi&&8&/span&&span class=&o&&);&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&byteBuffer&/span&&span class=&o&&.&/span&&span class=&na&&position&/span&&span class=&o&&(&/span&&span class=&mi&&0&/span&&span class=&o&&);&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&byteBuffer&/span&&span class=&o&&.&/span&&span class=&na&&limit&/span&&span class=&o&&(&/span&&span class=&n&&vtc&/span& &span class=&o&&*&/span& &span class=&mi&&32&/span&&span class=&o&&);&/span&
&span class=&n&&offs&/span& &span class=&o&&+=&/span& &span class=&n&&vtc&/span&&span class=&o&&;&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasTexture&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&floatBuffer&/span&&span class=&o&&.&/span&&span class=&na&&position&/span&&span class=&o&&(&/span&&span class=&mi&&3&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glTexCoordPointer&/span&&span class=&o&&(&/span&&span class=&mi&&2&/span&&span class=&o&&,&/span& &span class=&mi&&32&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&floatBuffer&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_TEXTURE_COORD_ARRAY&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasBrightness&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&setClientActiveTexture&/span&&span class=&o&&(&/span&&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&lightmapTexUnit&/span&&span class=&o&&);&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&shortBuffer&/span&&span class=&o&&.&/span&&span class=&na&&position&/span&&span class=&o&&(&/span&&span class=&mi&&14&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glTexCoordPointer&/span&&span class=&o&&(&/span&&span class=&mi&&2&/span&&span class=&o&&,&/span& &span class=&mi&&32&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&shortBuffer&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_TEXTURE_COORD_ARRAY&/span&&span class=&o&&);&/span&
&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&setClientActiveTexture&/span&&span class=&o&&(&/span&&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&defaultTexUnit&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasColor&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&byteBuffer&/span&&span class=&o&&.&/span&&span class=&na&&position&/span&&span class=&o&&(&/span&&span class=&mi&&20&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glColorPointer&/span&&span class=&o&&(&/span&&span class=&mi&&4&/span&&span class=&o&&,&/span& &span class=&kc&&true&/span&&span class=&o&&,&/span& &span class=&mi&&32&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&byteBuffer&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_COLOR_ARRAY&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasNormals&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&byteBuffer&/span&&span class=&o&&.&/span&&span class=&na&&position&/span&&span class=&o&&(&/span&&span class=&mi&&24&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glNormalPointer&/span&&span class=&o&&(&/span&&span class=&mi&&32&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&byteBuffer&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_NORMAL_ARRAY&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&floatBuffer&/span&&span class=&o&&.&/span&&span class=&na&&position&/span&&span class=&o&&(&/span&&span class=&mi&&0&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glVertexPointer&/span&&span class=&o&&(&/span&&span class=&mi&&3&/span&&span class=&o&&,&/span& &span class=&mi&&32&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&floatBuffer&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glEnableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_VERTEX_ARRAY&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDrawArrays&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&drawMode&/span&&span class=&o&&,&/span& &span class=&mi&&0&/span&&span class=&o&&,&/span& &span class=&n&&vtc&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_VERTEX_ARRAY&/span&&span class=&o&&);&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasTexture&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_TEXTURE_COORD_ARRAY&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasBrightness&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&setClientActiveTexture&/span&&span class=&o&&(&/span&&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&lightmapTexUnit&/span&&span class=&o&&);&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_TEXTURE_COORD_ARRAY&/span&&span class=&o&&);&/span&
&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&setClientActiveTexture&/span&&span class=&o&&(&/span&&span class=&n&&OpenGlHelper&/span&&span class=&o&&.&/span&&span class=&na&&defaultTexUnit&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasColor&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_COLOR_ARRAY&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasNormals&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&glDisableClientState&/span&&span class=&o&&(&/span&&span class=&n&&GL11&/span&&span class=&o&&.&/span&&span class=&na&&GL_NORMAL_ARRAY&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&n&&rawBufferSize&/span& &span class=&o&&&&/span& &span class=&mh&&0x20000&/span& &span class=&o&&&&&/span& &span class=&n&&rawBufferIndex&/span& &span class=&o&&&&/span& &span class=&o&&(&/span&&span class=&n&&rawBufferSize&/span& &span class=&o&&&&&/span& &span class=&mi&&3&/span&&span class=&o&&))&/span&
&span class=&o&&{&/span&
&span class=&n&&rawBufferSize&/span& &span class=&o&&=&/span& &span class=&mh&&0x10000&/span&&span class=&o&&;&/span&
&span class=&n&&rawBuffer&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&kt&&int&/span&&span class=&o&&[&/span&&span class=&n&&rawBufferSize&/span&&span class=&o&&];&/span&
&span class=&o&&}&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&rawBufferIndex&/span& &span class=&o&&*&/span& &span class=&mi&&4&/span&&span class=&o&&;&/span&
&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&reset&/span&&span class=&o&&();&/span&
&span class=&k&&return&/span& &span class=&n&&i&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&先看看2D渲染部分好了。2D渲染还是比较简单的,然而,GL11的代码仍然被写进了包括Gui基类在内的每一个Gui类。想要重写2D渲染,需要重写Tessellator(这个容易)(话说这玩意的名字是怎么起的)和所有的Gui类(比较难)(但也不是很难,就是工作量太大)。&br&顺便一提,&br&&img src=&/3a30d8f4f763c152a92d_b.png& data-rawwidth=&390& data-rawheight=&63& class=&content_image& width=&390&&&br&
mc所有渲染都在这个Tessellator里。&br&也许你很奇怪,一个三角形不是需要⑨个浮点才能渲染出来吗?为什么这个只需要五个浮点呢?&br&那是因为,你还被束缚在正常人类对渲染的理解里面……而mojang这些超人,他们对渲染的理解就是:立方体。他们只会渲染立方体,因此他们一次只需要3个浮点标记start,两个浮点标记大小就可以将一个矩形渲染出来了。简直像⑨一样天才!&br&&br&而3D的问题就更加麻烦了,首先看看方块的常规渲染流程:&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&class&/span& &span class=&nc&&RenderBlocks&/span&
&span class=&kd&&public&/span& &span class=&kt&&void&/span& &span class=&nf&&renderFaceXNeg&/span&&span class=&o&&(&/span&&span class=&n&&Block&/span& &span class=&n&&p__&/span&&span class=&o&&,&/span& &span class=&kt&&double&/span& &span class=&n&&p__&/span&&span class=&o&&,&/span& &span class=&kt&&double&/span& &span class=&n&&p__&/span&&span class=&o&&,&/span& &span class=&kt&&double&/span& &span class=&n&&p__&/span&&span class=&o&&,&/span& &span class=&n&&IIcon&/span& &span class=&n&&p__&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&Tessellator&/span& &span class=&n&&tessellator&/span& &span class=&o&&=&/span& &span class=&n&&Tessellator&/span&&span class=&o&&.&/span&&span class=&na&&instance&/span&&span class=&o&&;&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&hasOverrideBlockTexture&/span&&span class=&o&&())&/span&
&span class=&o&&{&/span&
&span class=&n&&p__&/span& &span class=&o&&=&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&overrideBlockTexture&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&kt&&double&/span& &span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&kt&&double&/span& &span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&kt&&double&/span& &span class=&n&&d5&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&kt&&double&/span& &span class=&n&&d6&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&kt&&double&/span& &span class=&n&&d7&/span&&span class=&o&&;&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&flipTexture&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d7&/span& &span class=&o&&=&/span& &span class=&n&&d3&/span&&span class=&o&&;&/span&
&span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&n&&d4&/span&&span class=&o&&;&/span&
&span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&n&&d7&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span& &span class=&o&&&&/span& &span class=&mf&&0.0&/span&&span class=&n&&D&/span& &span class=&o&&||&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span& &span class=&o&&&&/span& &span class=&mf&&1.0&/span&&span class=&n&&D&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getMinU&/span&&span class=&o&&();&/span&
&span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getMaxU&/span&&span class=&o&&();&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinY&/span& &span class=&o&&&&/span& &span class=&mf&&0.0&/span&&span class=&n&&D&/span& &span class=&o&&||&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxY&/span& &span class=&o&&&&/span& &span class=&mf&&1.0&/span&&span class=&n&&D&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d5&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getMinV&/span&&span class=&o&&();&/span&
&span class=&n&&d6&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getMaxV&/span&&span class=&o&&();&/span&
&span class=&o&&}&/span&
&span class=&n&&d7&/span& &span class=&o&&=&/span& &span class=&n&&d4&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d8&/span& &span class=&o&&=&/span& &span class=&n&&d3&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d9&/span& &span class=&o&&=&/span& &span class=&n&&d5&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d10&/span& &span class=&o&&=&/span& &span class=&n&&d6&/span&&span class=&o&&;&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&uvRotateNorth&/span& &span class=&o&&==&/span& &span class=&mi&&1&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d5&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d6&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d9&/span& &span class=&o&&=&/span& &span class=&n&&d5&/span&&span class=&o&&;&/span&
&span class=&n&&d10&/span& &span class=&o&&=&/span& &span class=&n&&d6&/span&&span class=&o&&;&/span&
&span class=&n&&d7&/span& &span class=&o&&=&/span& &span class=&n&&d3&/span&&span class=&o&&;&/span&
&span class=&n&&d8&/span& &span class=&o&&=&/span& &span class=&n&&d4&/span&&span class=&o&&;&/span&
&span class=&n&&d5&/span& &span class=&o&&=&/span& &span class=&n&&d6&/span&&span class=&o&&;&/span&
&span class=&n&&d6&/span& &span class=&o&&=&/span& &span class=&n&&d9&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&uvRotateNorth&/span& &span class=&o&&==&/span& &span class=&mi&&2&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d5&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d6&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d7&/span& &span class=&o&&=&/span& &span class=&n&&d4&/span&&span class=&o&&;&/span&
&span class=&n&&d8&/span& &span class=&o&&=&/span& &span class=&n&&d3&/span&&span class=&o&&;&/span&
&span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&n&&d4&/span&&span class=&o&&;&/span&
&span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&n&&d8&/span&&span class=&o&&;&/span&
&span class=&n&&d9&/span& &span class=&o&&=&/span& &span class=&n&&d6&/span&&span class=&o&&;&/span&
&span class=&n&&d10&/span& &span class=&o&&=&/span& &span class=&n&&d5&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&uvRotateNorth&/span& &span class=&o&&==&/span& &span class=&mi&&3&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d3&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d4&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedU&/span&&span class=&o&&(&/span&&span class=&mf&&16.0&/span&&span class=&n&&D&/span& &span class=&o&&-&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d5&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d6&/span& &span class=&o&&=&/span& &span class=&o&&(&/span&&span class=&kt&&double&/span&&span class=&o&&)&/span&&span class=&n&&p__&/span&&span class=&o&&.&/span&&span class=&na&&getInterpolatedV&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinY&/span& &span class=&o&&*&/span& &span class=&mf&&16.0&/span&&span class=&n&&D&/span&&span class=&o&&);&/span&
&span class=&n&&d7&/span& &span class=&o&&=&/span& &span class=&n&&d4&/span&&span class=&o&&;&/span&
&span class=&n&&d8&/span& &span class=&o&&=&/span& &span class=&n&&d3&/span&&span class=&o&&;&/span&
&span class=&n&&d9&/span& &span class=&o&&=&/span& &span class=&n&&d5&/span&&span class=&o&&;&/span&
&span class=&n&&d10&/span& &span class=&o&&=&/span& &span class=&n&&d6&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&kt&&double&/span& &span class=&n&&d11&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinX&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d12&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinY&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d13&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxY&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d14&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span&&span class=&o&&;&/span&
&span class=&kt&&double&/span& &span class=&n&&d15&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span&&span class=&o&&;&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderFromInside&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&d14&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMaxZ&/span&&span class=&o&&;&/span&
&span class=&n&&d15&/span& &span class=&o&&=&/span& &span class=&n&&p__&/span& &span class=&o&&+&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&renderMinZ&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&k&&if&/span& &span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&enableAO&/span&&span class=&o&&)&/span&
&span class=&o&&{&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setColorOpaque_F&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorRedTopLeft&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorGreenTopLeft&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorBlueTopLeft&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setBrightness&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&brightnessTopLeft&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d13&/span&&span class=&o&&,&/span& &span class=&n&&d15&/span&&span class=&o&&,&/span& &span class=&n&&d7&/span&&span class=&o&&,&/span& &span class=&n&&d9&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setColorOpaque_F&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorRedBottomLeft&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorGreenBottomLeft&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorBlueBottomLeft&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setBrightness&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&brightnessBottomLeft&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d13&/span&&span class=&o&&,&/span& &span class=&n&&d14&/span&&span class=&o&&,&/span& &span class=&n&&d3&/span&&span class=&o&&,&/span& &span class=&n&&d5&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setColorOpaque_F&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorRedBottomRight&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorGreenBottomRight&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorBlueBottomRight&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setBrightness&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&brightnessBottomRight&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d12&/span&&span class=&o&&,&/span& &span class=&n&&d14&/span&&span class=&o&&,&/span& &span class=&n&&d8&/span&&span class=&o&&,&/span& &span class=&n&&d10&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setColorOpaque_F&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorRedTopRight&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorGreenTopRight&/span&&span class=&o&&,&/span& &span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&colorBlueTopRight&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&setBrightness&/span&&span class=&o&&(&/span&&span class=&k&&this&/span&&span class=&o&&.&/span&&span class=&na&&brightnessTopRight&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d12&/span&&span class=&o&&,&/span& &span class=&n&&d15&/span&&span class=&o&&,&/span& &span class=&n&&d4&/span&&span class=&o&&,&/span& &span class=&n&&d6&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&k&&else&/span&
&span class=&o&&{&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d13&/span&&span class=&o&&,&/span& &span class=&n&&d15&/span&&span class=&o&&,&/span& &span class=&n&&d7&/span&&span class=&o&&,&/span& &span class=&n&&d9&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d13&/span&&span class=&o&&,&/span& &span class=&n&&d14&/span&&span class=&o&&,&/span& &span class=&n&&d3&/span&&span class=&o&&,&/span& &span class=&n&&d5&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d12&/span&&span class=&o&&,&/span& &span class=&n&&d14&/span&&span class=&o&&,&/span& &span class=&n&&d8&/span&&span class=&o&&,&/span& &span class=&n&&d10&/span&&span class=&o&&);&/span&
&span class=&n&&tessellator&/span&&span class=&o&&.&/span&&span class=&na&&addVertexWithUV&/span&&span class=&o&&(&/span&&span class=&n&&d11&/span&&span class=&o&&,&/span& &span class=&n&&d12&/span&&span class=&o&&,&/span& &span class=&n&&d15&/span&&span class=&o&&,&/span& &span class=&n&&d4&/span&&span class=&o&&,&/span& &span class=&n&&d6&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&如果只看这个的话,其实跟2D渲染相差不大,还是要渲染的类以非常低效的方式一个vertex一个vertex地传给tessellator,然后tessellator用while循环一个顶点一个顶点地写,虽然效率奇差,但是架构上至少还是理得清的嘛。然而,我们马上就要遇到mc代码里某种最硬伤的地方,硬编码。&img src=&/eba5de2ed4_b.png& data-rawwidth=&522& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&522& data-original=&/eba5de2ed4_r.png&&&img src=&/ba5dfda8335_b.png& data-rawwidth=&415& data-rawheight=&770& class=&content_image& width=&415&&有何感想?&br&因此,如果mc想简单地把代码变成Shader的形式,他们需要大规模地修改所有的核心渲染代码。如果他们想加速一下渲染流程,那么他们需要重写几乎所有核心渲染代码,添加管理类,改动主循环流程,并且大规模改动所有硬编码的实体渲染代码。如果他们想清理代码,把硬编码部分变成模型材质,充分利用VAO和VBO,把能在显存里完成的流程都优化进显存,那么现有的渲染代码基本上一行都不会剩下。如果他们想灵活运用GLSL的特性(到这里终于达到了一个现代游戏引擎的基本要求),那我已经难以想象了,那大概已经不是MC了……&br&所以你看,这玩意连微软都不好上手改,可见它确实有点不好改。
有点难。如果他们只是打算让代码兼容modern opengl core,那需要重写很多代码。如果他们打算让代码彻底利用modern opengl的特性,那需要重写更多代码。让我们先看看简单地让mc重写成GL3.2的形式需要的代码量。注意:以下代码均为反编译的1.7.10代码,请勿当…
&a class=&internal& href=&/people/liu-rong-34-97&&@天象&/a&讲的不错。如果直接修改为modern gl,确实很麻烦。&br&&p&不过如果换个思路,仅仅只是把GLES1改成GLES2,其实并不难。Windows系上的minecraft就是那样的。&/p&
讲的不错。如果直接修改为modern gl,确实很麻烦。不过如果换个思路,仅仅只是把GLES1改成GLES2,其实并不难。Windows系上的minecraft就是那样的。
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 minecraft没有shader 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信