Good or bad idea for a beginning project? (software rendered model viewer)

Started by
6 comments, last by Dim_Yimma_H 14 years, 5 months ago
Hey, While learning C++, I had the idea of starting out just trying to build a very, very basic software rendered model view/mesh. I'm sure there is a lot involved, but it will be a good learning experience to a programming beginner such as myself I guess. Any suggested tutorials on C++ software renderers (raytraced or rasterized), or is this a too-complex idea? It would be a fun one, I would imagine. If that *isn't* a good idea, then I'd like to start building a simple model viewer with ISO/ANSI C++ and DirectX. Thanks for any suggestions. :) (this is to be done while I'm going through Beginning Visual C++ 2008 from WROX, a pretty detail-rich book) [Edited by - j83 on November 4, 2009 6:34:46 AM]
Advertisement
Try it out and see how far you go. No matter what you do you will get experience from it. If you decide it's a little bit over your head than just switch to something else and go back to it later. Completing projects isnt as important as just coding. The more you write, the more you'll see patterns and ways of doing things that are better than other ways, and that is what you really want to learn. It's not about the language in most cases, it's your problem solving abilities and having them increase. Good luck with whatever you do.
__________________________________________
Eugene Alfonso
GTP | Twitter | SFML | OS-Dev
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-837Fall2003/CourseHome/

This class leads you through developing a raytracer in C++. All the course materials are on there for free, and I myself have done the homework assignments (except for the last one). They are well laid out and a really good intro. One warning is that the code is a mixture of C and C++ techniques, but the point of this class was to learn the graphics techniques and not programming idioms anyway.
I think this isnt a bad idea, as long as you've done some more basic programs before, and have a basic grasp of the language.
Actually, my third, or fourth program was a software renderer, that I wrote a decade ago, and in that time, I didnt have internet nor books, so it is definitely doable, especially with all the info you can find in the net.

For links, hmm, this one looks good enough.
Quote:Original post by phear-
Completing projects isnt as important as just coding. The more you write, the more you'll see patterns and ways of doing things that are better than other ways, and that is what you really want to learn.


No, it's all about completing things, and nothing else.

If one leaves the project in the middle, it will usually happen when encountering something unknown or difficult or not fun. That is when the real learning begins.

For example, one can learn C arrays. But when trying to resize them, one would prefer to stay in comfort zone, and instead abandon the project, or simply solve the problem by allocating array large enough to hold current problem set ("works for me").

Instead, doing it the hard way, solving the problem entirely by biting into vector<> would be a much more productive way.

Coding for the sake of writing lines of code is the very anti-thesis of learning.
You all have been truly helpful and thank you for your contributions. I'll report back with my progress as time permits.

Quote:Original post by Antheus
Quote:Original post by phear-
Completing projects isnt as important as just coding. The more you write, the more you'll see patterns and ways of doing things that are better than other ways, and that is what you really want to learn.


No, it's all about completing things, and nothing else.

If one leaves the project in the middle, it will usually happen when encountering something unknown or difficult or not fun. That is when the real learning begins.

Coding for the sake of writing lines of code is the very anti-thesis of learning.


In the other part of my post I said that problem solving is the most important part of learning which I see you agree with. Problems abstractly share similarities with other problems, thus the more problems you can solve the better and faster you can create a solution to a given problem. Yes I dont think that a person should stop a project because they get stuck at a problem. That is counter-productive. But there are many reasons to stop a project, like time or budget or lack of motivation to continue. How many times have you stopped making a game or piece of software because you found what it did doesnt work or you dont find it useful anymore? It happens. I've left game projects before because after building the prototype I realize that it's just not fun in person, only in theory. To say that the most likely reason someone leaves a project is because of a problem that is unsolved is entirely untrue as people discontinue work on projects all the time.

Quote:Original post by Antheus
Coding for the sake of writing lines of code is the very anti-thesis of learning.


Quote:Original post by phear-
It's not about the language in most cases, it's your problem solving abilities and having them increase.
__________________________________________
Eugene Alfonso
GTP | Twitter | SFML | OS-Dev
Quote:Original post by j83
If that *isn't* a good idea, then I'd like to start building a simple model viewer with ISO/ANSI C++ and DirectX.

It sounds like a quite big step to a 3D model viewer, where are you starting from?

What I think of is that a model viewer needs graphics output (more advanced than text output), and possibly some user input.

If you would find a renderer-tutorial based on Win32 (windows, input, 2D graphics etc.) that may steal your focus from the rendering itself, depending on how used you are to API's and libraries?

DirectX is also usually coded on top of Win32, or MFC (modern version of Win32) or the newest .NET development kit.

If you want to focus directly on software graphics programming, then I think the SDL site can be a good place to start: http://www.libsdl.org/
It requires less code for creating a window and lets you code pixel-based graphics relatively easy.

I can have no idea whether you have coded graphics yet, but it seems reasonable to do some graphics first and then start thinking of how model rendering can be implemented with those graphics capabilities.

This topic is closed to new replies.

Advertisement