void CActorInstance::OnRender()
{
D3DMATERIAL8 kMtrl;
STATEMANAGER.GetMaterial(&kMtrl);
kMtrl.Diffuse = D3DXCOLOR(m_dwMtrlColor);
STATEMANAGER.SetMaterial(&kMtrl);
STATEMANAGER.SaveRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
bool bIsSpecialModel = (IsNPC() || IsBuilding() || IsEnemy());
if (bIsSpecialModel)
{
// NPC veya Ev ise Alpha Testi aktif ediyoruz
STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
STATEMANAGER.SetRenderState(D3DRS_ALPHAREF, 1);
STATEMANAGER.SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
}
else
{
// Diğer durumlarda (PC vb.) kapalı kalmasını sağlıyoruz
STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
}
// ------------------------------------------
switch(m_iRenderMode)
{
case RENDER_MODE_NORMAL:
// --- ALPHA TEST AKTİF ETME ---
// STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
STATEMANAGER.SetRenderState(D3DRS_ALPHAREF, 1);
STATEMANAGER.SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
BeginDiffuseRender();
RenderWithOneTexture();
EndDiffuseRender();
BeginOpacityRender();
BlendRenderWithOneTexture();
EndOpacityRender();
// İşlem bittikten sonra kapatıyoruz ki diğer çizimler etkilenmesin
// STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
break;
case RENDER_MODE_BLEND:
if (m_fAlphaValue == 1.0f)
{
// Karakter tam görünürken de Alpha Test gerekebilir
// STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
BeginDiffuseRender();
RenderWithOneTexture();
EndDiffuseRender();
BeginOpacityRender();
BlendRenderWithOneTexture();
EndOpacityRender();
// STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
}
else if (m_fAlphaValue > 0.0f)
{
BeginBlendRender();
RenderWithOneTexture();
BlendRenderWithOneTexture();
EndBlendRender();
}
break;
case RENDER_MODE_ADD:
BeginAddRender();
RenderWithOneTexture();
BlendRenderWithOneTexture();
EndAddRender();
break;
case RENDER_MODE_MODULATE:
BeginModulateRender();
RenderWithOneTexture();
BlendRenderWithOneTexture();
EndModulateRender();
break;
}
STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
STATEMANAGER.RestoreRenderState(D3DRS_CULLMODE);
kMtrl.Diffuse=D3DXCOLOR(0xffffffff);
STATEMANAGER.SetMaterial(&kMtrl);
if (ms_isDirLine)
{
D3DXVECTOR3 kD3DVt3Cur(m_x, m_y, m_z);
D3DXVECTOR3 kD3DVt3LookDir(0.0f, -1.0f, 0.0f);
D3DXMATRIX kD3DMatLook;
D3DXMatrixRotationZ(&kD3DMatLook, D3DXToRadian(GetRotation()));
D3DXVec3TransformCoord(&kD3DVt3LookDir, &kD3DVt3LookDir, &kD3DMatLook);
D3DXVec3Scale(&kD3DVt3LookDir, &kD3DVt3LookDir, 200.0f);
D3DXVec3Add(&kD3DVt3LookDir, &kD3DVt3LookDir, &kD3DVt3Cur);
STATEMANAGER.SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
D3DXVECTOR3 kD3DVt3AdvDir(0.0f, -1.0f, 0.0f);
D3DXMATRIX kD3DMatAdv;
D3DXMatrixRotationZ(&kD3DMatAdv, D3DXToRadian(GetAdvancingRotation()));
D3DXVec3TransformCoord(&kD3DVt3AdvDir, &kD3DVt3AdvDir, &kD3DMatAdv);
D3DXVec3Scale(&kD3DVt3AdvDir, &kD3DVt3AdvDir, 200.0f);
D3DXVec3Add(&kD3DVt3AdvDir, &kD3DVt3AdvDir, &kD3DVt3Cur);
static CScreen s_kScreen;
STATEMANAGER.SaveTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
STATEMANAGER.SaveTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
STATEMANAGER.SaveRenderState(D3DRS_ZENABLE, FALSE);
STATEMANAGER.SetRenderState(D3DRS_LIGHTING, FALSE);
s_kScreen.SetDiffuseColor(1.0f, 1.0f, 0.0f);
s_kScreen.RenderLine3d(kD3DVt3Cur.x, kD3DVt3Cur.y, kD3DVt3Cur.z, kD3DVt3AdvDir.x, kD3DVt3AdvDir.y, kD3DVt3AdvDir.z);
s_kScreen.SetDiffuseColor(0.0f, 1.0f, 1.0f);
s_kScreen.RenderLine3d(kD3DVt3Cur.x, kD3DVt3Cur.y, kD3DVt3Cur.z, kD3DVt3LookDir.x, kD3DVt3LookDir.y, kD3DVt3LookDir.z);
STATEMANAGER.SetRenderState(D3DRS_LIGHTING, TRUE);
STATEMANAGER.RestoreRenderState(D3DRS_ZENABLE);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_COLORARG1);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_COLOROP);
STATEMANAGER.RestoreTextureStageState(0, D3DTSS_ALPHAOP);
STATEMANAGER.RestoreVertexShader();
}
}Although Granny Viewer looks fine, it can't render because the Metin2 game engine is insufficient.
Therefore, we choose low-poly trees.
I have been able to add 4 trees so far.
granny 2.11
When you create an NPC, it's in the shade.
https://www.mediafire.com/file/izbyoeiq ... k.zip/file
