- Mesaj
- 4.378
- Çözümler
- 439
- Beğeni
- 4.910
- Puan
- 1.849
- Ticaret Puanı
- 0
Kodlarda gezinirken bir şey dikkatimi çekti.
O da şu:
Bu iki fonksiyon farklı yerlerden farklı sayıda argümanlarla çağrılıyor fakat ikisinin de yaptığı şey aynı.
Bunun neden böyle olduğuna dair bir mantıklı bir yorum bulamadım. Ama gereksiz.
Düzeltme için aşağıdakileri uygulayın.
Dikkat: sonu float * pfY) ile biten fonksiyonu sileceksiniz.
GrpScreen.h: Bulun ve silin.
GrpScreen.cpp: Bulun ve silin:
GrpScreen.h içinde az önce silinen fonksiyon ile aynı isimde olan şu imzayı göreceksiniz:
Bunu şu şekilde değiştirin:
Son olarak GrpScreen.cpp içindeki şu fonksiyona gelin:
Aşağıdaki gibi z verisini düzenleyin:
O da şu:
Argümanı dahil etmek: 
Komple yeni fonksiyon oluşturmak:

Komple yeni fonksiyon oluşturmak:

Bu iki fonksiyon farklı yerlerden farklı sayıda argümanlarla çağrılıyor fakat ikisinin de yaptığı şey aynı.
Bunun neden böyle olduğuna dair bir mantıklı bir yorum bulamadım. Ama gereksiz.
Düzeltme için aşağıdakileri uygulayın.
Dikkat: sonu float * pfY) ile biten fonksiyonu sileceksiniz.
GrpScreen.h: Bulun ve silin.
C++:
void ProjectPosition(float x, float y, float z, float * pfX, float * pfY);
GrpScreen.cpp: Bulun ve silin:
C++:
void CScreen::ProjectPosition(float x, float y, float z, float * pfX, float * pfY)
{
D3DXVECTOR3 Input(x, y, z);
D3DXVECTOR3 Output;
D3DXVec3Project(&Output, &Input, &ms_Viewport, &ms_matProj, &ms_matView, &ms_matWorld);
*pfX = Output.x;
*pfY = Output.y;
}
GrpScreen.h içinde az önce silinen fonksiyon ile aynı isimde olan şu imzayı göreceksiniz:
C++:
void ProjectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ);
Bunu şu şekilde değiştirin:
C++:
void ProjectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ = nullptr);
Son olarak GrpScreen.cpp içindeki şu fonksiyona gelin:
C++:
void CScreen::ProjectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ)
{
D3DXVECTOR3 Input(x, y, z);
D3DXVECTOR3 Output;
D3DXVec3Project(&Output, &Input, &ms_Viewport, &ms_matProj, &ms_matView, &ms_matWorld);
*pfX = Output.x;
*pfY = Output.y;
*pfZ = Output.z;
}
Aşağıdaki gibi z verisini düzenleyin:
C++:
void CScreen::ProjectPosition(float x, float y, float z, float * pfX, float * pfY, float * pfZ)
{
D3DXVECTOR3 Input(x, y, z);
D3DXVECTOR3 Output;
D3DXVec3Project(&Output, &Input, &ms_Viewport, &ms_matProj, &ms_matView, &ms_matWorld);
*pfX = Output.x;
*pfY = Output.y;
if(pfZ) // Bu önemli
*pfZ = Output.z;
}