How to draw textured and textureless objects simultaneously

Started by
3 comments, last by leonard2012 11 years, 12 months ago
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.
Advertisement
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!

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!

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?

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.


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.
Thanks Tom.

This topic is closed to new replies.

Advertisement