我想在裝配中製作光線投射引擎,並且出現問題。 繪製紋理似乎不能正常工作。在光線投射引擎中繪製紋理
這是它的樣子:
在的與牆壁發現碰撞的循環,如果碰撞結果發現我把x或y的浮點部分,並用它計算繪製紋理的位置。
我已經嘗試調試,我發現問題可能是最終紋理x是相同的幾次,但你可以在圖片中看到,從側面看它工作幾乎很好,所以我不認爲這是問題所在。
想要的結果只是在沒有這些扭曲的情況下紋理將被正確繪製。
我認爲這個問題是在代碼here地方:
mov ebx,WINDOW_HEIGHT/2
sub ebx,eax
mov eax,height
mov screenypos,ebx
dec typeofwall
movss xmm0,floatingpoint
mulss xmm0,FP4(64.0f)
mov eax,typeofwall
cvtsi2ss xmm1,eax
mulss xmm1,FP4(64.0f)
addss xmm0,xmm1
movss tempvarr,xmm0
invoke FLOOR,tempvarr
cvtss2si eax, xmm0
mov finaltexturex,eax
;invoke
BUILDRECT,screenpos,screenypos,linewidth,height,hdc,localbrush
invoke DrawImage,hdc,wolftextures,screenpos,screenypos,finaltexturex,0,linewidth,64,linewidth,height
我們幫助修復代碼。我們不是在這裏看東西的照片。 –
將代碼粘貼到此處。 –
爲什麼浮點?使用16:16固定點,如果這是32b模式,那就足夠精確,而且寫起來更容易。舉例來說,1:16在地圖上有1個瓦片,你仍然有大約〜256個高精度的紋理分辨率,也許只要2048就可以延伸到很好的效果......如果你想要更高的紋理分辨率,但是256x256的地圖足夠了,那麼8:24(1:24 = +瓷磚)可以使用。 Wolf3D不需要FP協處理器。 :D(並且僅具有32(5b)紋理res IIRC的8:8定點數學)。 – Ped7g