易语言如何制作3D游戏,抓紧时间。或者可以修改的源代码。之后就分了。资金紧张。
版本2
子程序绘制
。局部变量I
。局部变量Colort,十进制类型。
。局部变量F1,十进制类型。
。局部变量F2,十进制类型。
表面渲染1。开始渲染()
' //////////////////////////////////////////////////////
天空。Render()'渲染气氛
天空。启用雾化(真)
' //////////////////////////////////////////////////////
如果为真(地图信息。HeightX ≠ 0)
地形。Render()'渲染地面
如果真的结束了。
' //////////////////////////////////////////////////////
渲染背景模型
如果为真(地图信息。网格数> 0)
计数循环头(地图信息。梅什努姆岛)
如果为true (tempmesh [I])。over = false和TempMesh [i]。种类≠ 2)
模型[i]。渲染()
如果真的结束了。
。计数周期尾部()
如果真的结束了。
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
画出角色部分
。如果为真(是否打开动态阴影)
场景。完成阴影渲染()'绘制阴影。
如果真的结束了。
NPC[1]. body . Rendering(false)
。变量循环头(2,映射信息。npcnum+1,1,I)
如果为真(Npc [i].启用和Npc [i]。种类≠ 6)
colort = 1-Npc[I]. act num 1÷5000
如果为真(颜色> 1)
Colort = 1
如果真的结束了。
。如果为真(颜色< 0)
Colort = 0
如果真的结束了。
如果属实(NPC[我]。状态= 4)
材料。设置不透明度(正常,彩色)
如果真的结束了。
Npc [i].Body. Rendering(假)
如果属实(NPC[我]。状态= 4)
材料。设置不透明度(正常,1)
如果真的结束了。
如果真的结束了。
。可变循环尾()
人员[当前人员+1]。渲染(假)
If IfPart Then GE。'绘制辉光'绘制武器辉光。
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
绘制最小网格
如果为真(是否启用水资源())
水r .渲染()
如果真的结束了。
如果为真(地图信息。最小值> 0)
计数循环头(地图信息。最小,我)
如果为真(临时迷你模型[i])。数量≠ 0)
迷你模型[i]。渲染()
如果真的结束了。
。计数周期尾部()
如果真的结束了。
。如果为真(ModelActor [14])。Enable())
ModelActor [14]。渲染(真)
如果真的结束了。
。如果为真(ModelActor [15])。Enable())
ModelActor [15]。渲染(真)
如果真的结束了。
天空。启用雾化(假)
绘制前景透明模型。
如果为真(地图信息。网格数> 0)
计数循环头(地图信息。梅什努姆岛)
。如果为true (TempMesh [i])。结束)
模型[i]。渲染()
如果真的结束了。
。计数周期尾部()
如果真的结束了。
' //////////////////////////////////////////////////////
。如果是真的(水。是否启用())
水。Render()'绘制水面。
如果真的结束了。
' //////////////////////////////////////////////////////
。计数循环头(地图信息。NPC号码+1,I)
。如果真(Npc [i].Shadow .是否启用()以及是否开启动态阴影=假)
' Npc [i].Shadow. Render()'绘制阴影。
如果真的结束了。
。如果属实(NPC[我]。情感> 0)
Npc [i].EmotionM. Rendering()
NPC[我]。情感= NPC[我]。情绪持续时间
如果真的结束了。
。计数周期尾部()
' //////////////////////////////////////////////////////
。如果是真的(五线谱轨迹特效。是否启用())
五线谱轨迹特效。渲染()
如果真的结束了。
。计数循环头(# effective nim max+1,I)
。如果为真(有效anim [I].启用)
有效的动画[I]。身体。渲染(真)
如果真的结束了。
。计数周期尾部()
如果为真(是否打开粒子)
场景。“渲染所有粒子系统(真)”绘制粒子。
如果真的结束了。
屏幕绘图。绘制一个三维矩形(Vecc [1],Vecc [2],-1)
表面渲染1。结束渲染()
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
' //////////////////////////////////////////////////////
。如果为真(是否全屏泛光灯)
。If(模糊)
特效。设置光晕参数(创建E色(1,1,1,1),flood × 0.1,柔化)。
否则。
特效。设置发光参数(创建E颜色(1,1,1,1),泛光和柔化)
如果结束了
发光表面渲染。BLT表面渲染(表面渲染1)
特效。更新发光()
如果真的结束了。
' //////////////////////////////////////////////////////
最终的画面
引擎。清晰屏幕(模糊)'清晰屏幕
。If(是否全屏泛光灯)
= 0.5
否则。
GammaA = 1
如果结束了
如果为真(模糊)
γa =γa×0.2
如果真的结束了。
屏幕绘图。开始2D绘图()
屏幕绘图。绘制纹理(表面渲染1。取纹理索引(),0,0,屏幕宽度,屏幕高度,RGBA (Gammar,Gammag,Gammab,Gammaa))'来渲染主屏幕。
。如果为真(切换屏幕计数器> 0)
切换屏幕计数器=切换屏幕计数器+持续时间
如果为真(切换屏幕计数器> 1500)
开关屏幕计数器= 1500
如果真的结束了。
。If(是否全屏泛光灯)
屏幕绘图。绘制纹理(RS2。取纹理索引(),0,0,屏幕宽度,屏幕高度,RGBA (gammar,gammag,gammab,(1-开关屏幕计数器÷ 1500) × 0.5)。
否则。
屏幕绘图。绘制纹理(RS2。取纹理索引(),0,0,屏幕宽度,屏幕高度,RGBA (gammar,gammag,gammab,1-开关屏幕计数器÷ 1500)。
如果结束了
。如果为真(切换屏幕计数器= 1500)