Sign in to follow this  

How to draw textured and textureless objects simultaneously

This topic is 2060 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am new to D3D programming and learning the book "Introduction to 3D game programming with DirectX 10". Now I want to draw multiple graphics objects in the client area. Most of the objects including geometric shapes (lines, polygons), symbols are textureless, whereas a few objects such as terrain map, satellite images have textures. I don't know how to draw these textured and textureless objects at the same time. The examples in the book are proposed to render either textured objects, or textureless objects, but not both.
It seems that I have to define separate data structures (vertex, vertex input layout, effects) for both categories. But what about pixel shader and vertex shader defined in effect file (.fx)? There has to be only one vertex shader and only one pixel shader in effect file.

Share this post


Link to post
Share on other sites
What you need to do is to create two shaders (each in their own effect file), and switch shaders between draw calls, in the same way that you can swap textures between draw calls.

If the book doesn't cover that then you might want to find another one!

Share this post


Link to post
Share on other sites
[quote name='Adam_42' timestamp='1335469344' post='4935187']
What you need to do is to create two shaders (each in their own effect file), and switch shaders between draw calls, in the same way that you can swap textures between draw calls.

If the book doesn't cover that then you might want to find another one!
[/quote]
Thank you very much Adam_42.
My book does not cover the topic and I will do some research on how to switch shaders in Direct3D. By the way, do you have some hands-on code samples?

Share this post


Link to post
Share on other sites
[quote name='leonard2012' timestamp='1335456436' post='4935108']
But what about pixel shader and vertex shader defined in effect file (.fx)? There has to be only one vertex shader and only one pixel shader in effect file.
[/quote]

I'm not familiar with DX10, but at least in DX9 (I would be surprised if it was different in 10), you can have as many VS and PS in one effect file as you want. You can define multiple techniques in the same effect file, each using completely different shaders.

But I think that the common approach is to write one effect file for a specific visual look (e.g. glass, brushed metal etc.), while each effect file can have multiple techniques describing multiple ways how to render this particular look (better quality for better computers, DX8 compatible technique etc.).

So yea, you maybe should make separate fx files for textured and non-textured objects, but you don't have to.

If your application is simple, it would be maybe easier for you to put it all into a single FX file. Then you don't have to create and manage multiple effects and change them during rendering, you just swap techniques.

Share this post


Link to post
Share on other sites

This topic is 2060 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this