Jump to content

  • Log In with Google      Sign In   
  • Create Account


How to draw textured and textureless objects simultaneously


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 leonard2012   Members   -  Reputation: 167

Like
0Likes
Like

Posted 26 April 2012 - 10:07 AM

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.

Sponsor:

#2 Adam_42   Crossbones+   -  Reputation: 2354

Like
0Likes
Like

Posted 26 April 2012 - 01:42 PM

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!

#3 leonard2012   Members   -  Reputation: 167

Like
0Likes
Like

Posted 26 April 2012 - 09:18 PM

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?

#4 Tom KQT   Members   -  Reputation: 1497

Like
0Likes
Like

Posted 27 April 2012 - 01:08 AM

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.

#5 leonard2012   Members   -  Reputation: 167

Like
0Likes
Like

Posted 27 April 2012 - 10:20 AM

Thanks Tom.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS