K
Kenyai
Guest
I've been interested in building my own 3D engine. But I think I have a problem. I'm too interested in the math involved in 3D rendering.
I know how matrices work for rotations, I've become best friends with vectors, I learned how to interpolate the colors for gouraud shading, I figured out an algorithm for a ray-triangle intersect (by the way, is there a faster way to do perspective correction for sampling than ray-tracing the pixels?), and so on. I used DirectDraw and directly plotted the pixels I needed to draw my triangles with my own functions. But I realized pretty quickly that my engine will never be very fast if I only use DirectDraw. I could only draw about 100000 solid-color triangles per cycle before my FPS became unacceptable.
I hate Direct3D. I don't know why. Maybe it's the lack of freedom involved when one has to call a particular Microsoft function to do what one wants instead of writing one's own code. I just can't get comfortable with it. Is there a way for me to access hardware acceleration or to draw triangles with lightning speed using my own code? I want all the speed that comes with Direct3D but all the freedom of coding from scratch. Is it a one-or-the-other situation?
I know how matrices work for rotations, I've become best friends with vectors, I learned how to interpolate the colors for gouraud shading, I figured out an algorithm for a ray-triangle intersect (by the way, is there a faster way to do perspective correction for sampling than ray-tracing the pixels?), and so on. I used DirectDraw and directly plotted the pixels I needed to draw my triangles with my own functions. But I realized pretty quickly that my engine will never be very fast if I only use DirectDraw. I could only draw about 100000 solid-color triangles per cycle before my FPS became unacceptable.
I hate Direct3D. I don't know why. Maybe it's the lack of freedom involved when one has to call a particular Microsoft function to do what one wants instead of writing one's own code. I just can't get comfortable with it. Is there a way for me to access hardware acceleration or to draw triangles with lightning speed using my own code? I want all the speed that comes with Direct3D but all the freedom of coding from scratch. Is it a one-or-the-other situation?