Simulating OpenGL's Display List via Direct3D
I'm trying to come up with a way to closely simulate OpenGL Display List functionality for Direct3D. IMO, Microsoft should have kept the IDirect3DExecuteBuffer interface available along side of the IDirect3DDeviceX::Draw[Indexed]Primitive[UP] methods of rendering to reduce this problem. So, something like a push buffer sounds desirable. Btw, anyone have any links as to how state blocks work? Thanks.
Directx is a Object Oriented Api, not like Client-Server Opengl State Machine. What you want to do can be done using Index and Vertex Buffers, then pass the pointer to the device with SetStreamSource.
Quote:Original post by blueshogun96
IMO, Microsoft should have kept the IDirect3DExecuteBuffer interface available along side of the IDirect3DDeviceX::Draw[Indexed]Primitive[UP] methods of rendering to reduce this problem.
What problem are you trying to solve, exactly?
What I'd like to be able to do is to render an entire scene with only one draw call similar to what you'd do in a Display List without having to use multiple draw calls. My problem is that I'm trying to simulate a push buffer using Direct3D. Anyone who's programmed for Xbox will understand what I mean. Sorry if I wasn't very clear before.
Use Direct3D 11 if you want this functionality. It has this functionality in its device contexts, and can be used with D3D9, 10 and 11 level of hardware (though D3D9 functionality is limited to shader model 2b).
Quote:Original post by blueshogun96
What I'd like to be able to do is to render an entire scene with only one draw call similar to what you'd do in a Display List without having to use multiple draw calls. My problem is that I'm trying to simulate a push buffer using Direct3D. Anyone who's programmed for Xbox will understand what I mean. Sorry if I wasn't very clear before.
I was more interested in why you need to do things this way. Unless you're working with D3D11, DirectX doesn't really have an equivalent for this (and even then you still have to pay the draw call cost for the commands in that buffer, all you're really doing is deferring them until later) and there are generally a number of viable ways in which you can cut down on draw call count depending on what effect you're trying to achieve.
Hence, more info please?
Alright, here goes...
I'm working on an Xbox emulator. One of the key features of Xbox is the PushBuffer. It works very similar to the OpenGL Display List and the DirectX 3 ExecuteBuffer. One of the biggest things effecting speed is the PushBuffer emulation, and in some ways, Direct3D is not sufficient to emulate it properly, or at all. I'm going to port this project to OpenGL later on as the NV2x hardware is very OpenGL oriented and contains many features that are exclusive to OpenGL.
I'm working on an Xbox emulator. One of the key features of Xbox is the PushBuffer. It works very similar to the OpenGL Display List and the DirectX 3 ExecuteBuffer. One of the biggest things effecting speed is the PushBuffer emulation, and in some ways, Direct3D is not sufficient to emulate it properly, or at all. I'm going to port this project to OpenGL later on as the NV2x hardware is very OpenGL oriented and contains many features that are exclusive to OpenGL.
I agree that OpenGL is a good way to go, not only for functionality but because it's multiplatform. Still, DX11 would probably work well if you don't mind being limited to Windows Vista and 7.
Use Direct3D 11 if you want this functionality. It has this functionality in its device contexts, and can be used with D3D9, 10 and 11 level of hardware (though D3D9 functionality is limited to shader model 2b).
Could you be specific? Which mechanism/function/interface does D3D 11 provide to simulate OpenGL display list?
Hello, and welcome to 2 years ago
As for the question: ID3D11DeviceContext I would assume.
As for the question: ID3D11DeviceContext I would assume.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement