Heightmap Terrain Generation?
hey guys,
i''m trying to figure out how to blend my height bmp
with a plane in order to render a heightmap. I don''t
know how to set the render state.
also just to clarify the esoteric MS docs. i see render
ops as follows:
lpDev->SetTexture(0,lptex);
lpDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
lpDev->SetTextureStageState(0, D3DTSS_COLOROP, D3D_SELECTARG1);
now, from what i think i know, doing all 3 lines is basically
an explicit way of simply doing the top line. i.e. it says
(1) associate the texture to be used,
(2) set the 1st argument as the texture
(3) output the texture
What i''m getting at is i often see lines of texture ops that
seem to be...redundant. is my thinking right?
I agree that the texture stage functions can be hopelessly confusing. In fact you see the same sequences so often that you wonder why there aren''t macro''s defined for them to make things simpler for beginners. But, each one of those lines actually does something different, and the flexibility given by having all this micromanagement allows you to do all sorts of effects like alpha blending, lightmapping, bump mapping, etc.
lpDev->SetTexture(0,lptex);
selects lptex as the texture for stage 0 (you have up to 8 stages). note it doesn''t say how stage 0 is used.
lpDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
sets the argument for stage zero to the texture color. not we still don''t know how the argument is used.
lpDev->SetTextureStageState(0, D3DTSS_COLOROP, D3D_SELECTARG1);
sets the operation for stage 0 to take color from arg1, which happens to be the color of lptex.
Is that a really long and convoluted way to do things? It sure is, but you will appreciate the flexability later on when you have to do multitexturing effects.
By the way, the hieghtmap has nothing to do with the textures, but rather the vertices. Basically you take the x,y values of the bitmap for the hieghtmap vertices, and use the color value for the z coordinate. I have some code to do this if you need help.
lpDev->SetTexture(0,lptex);
selects lptex as the texture for stage 0 (you have up to 8 stages). note it doesn''t say how stage 0 is used.
lpDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
sets the argument for stage zero to the texture color. not we still don''t know how the argument is used.
lpDev->SetTextureStageState(0, D3DTSS_COLOROP, D3D_SELECTARG1);
sets the operation for stage 0 to take color from arg1, which happens to be the color of lptex.
Is that a really long and convoluted way to do things? It sure is, but you will appreciate the flexability later on when you have to do multitexturing effects.
By the way, the hieghtmap has nothing to do with the textures, but rather the vertices. Basically you take the x,y values of the bitmap for the hieghtmap vertices, and use the color value for the z coordinate. I have some code to do this if you need help.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement