FacebookTwitter
Hatrack River Forum   
my profile login | search | faq | forum home

  next oldest topic   next newest topic
» Hatrack River Forum » Active Forums » Books, Films, Food and Culture » C++ Meta Thread

   
Author Topic: C++ Meta Thread
Blayne Bradley
unregistered


 - posted            Edit/Delete Post 
renewing this thread as I have no idea how to find my old C++ thread.


Anyways: Do any of the C++ savvy people know a good place to start looking for doing graphic design related programming with C++?

IP: Logged | Report this post to a Moderator
Threads
Member
Member # 10863

 - posted      Profile for Threads   Email Threads         Edit/Delete Post 
You need to be a little more specific about what you mean by "graphic design related programming." Are you looking for a 3D graphics library? An imaging library? Or do you just need to do simple 2D polygon drawing?
Posts: 1327 | Registered: Aug 2007  |  IP: Logged | Report this post to a Moderator
Wonder Dog
Member
Member # 5691

 - posted      Profile for Wonder Dog           Edit/Delete Post 
Blayne, in the design world, Graphic Design is done by humans who are trained in that discipline. Graphic Designing usually consists of creating layouts and images that communicate your idea effectively to your viewer while balancing aesthetic issues. Various software packages are used by these people - are you talking about designing some graphics tools?
Posts: 353 | Registered: Sep 2003  |  IP: Logged | Report this post to a Moderator
ricree101
Member
Member # 7749

 - posted      Profile for ricree101   Email ricree101         Edit/Delete Post 
OpenGL is probably going to be your best bet for general purpose graphics. It is pretty multiplatform and is one of the most widely used graphics libraries I know of.

OpenGL.org

The official programming guide (although I think this isn't the most recent version, it should be fine for getting started).

Edit: I missed that the question was "graphic design" rather than just graphics. I really can't help much there, but I'd recommend just going to sourceforge or something and looking up image manipulation libraries.

Posts: 2437 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Graphic design can also involve a lot of programming. There are several successful artists that use programming extensively. Take a look at W. Bradford Paley's work sometime.
Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Blayne Bradley
unregistered


 - posted            Edit/Delete Post 
Maybe im confusing the term.

Basically with C++ create a little physics engine with a gui. with walls, you can have hit tests move the camera pov around.

IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
That's game programming.

For C++, get the OpenGL Red Book (an early edition of which is linked above, but the new version is even better), that will hold you for the graphics.

You might take a look at this page, and at the wiki in general: http://gpwiki.org/index.php/How_do_I_get_Started

If you want an easier way to get started, and a chance to pick up a new language, check out pygame. Its not performant enough for games with intensive graphics or high frame rates, but its quite suitable for a lot of simpler games. Its also being updated using a python library called ctypes that is greatly increasing its speed.

edit: and how much matrix algebra do you know? Low level game programming like that involves a good bit of math (and the more math you know, the better you'll be at it). Plus, I hope you've got some experience with state machines (OpenGL implements a state machine-based API, though that's changing in 3.0).

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Bokonon
Member
Member # 480

 - posted      Profile for Bokonon           Edit/Delete Post 
I will reiterate fugu's comment on math. 3D graphics programming is a hard science. So hard that it often looks like alchemy to others.

-Bok

Posts: 7021 | Registered: Nov 1999  |  IP: Logged | Report this post to a Moderator
Nighthawk
Member
Member # 4176

 - posted      Profile for Nighthawk   Email Nighthawk         Edit/Delete Post 
quote:
Originally posted by Blayne Bradley:
Maybe im confusing the term.

Basically with C++ create a little physics engine with a gui. with walls, you can have hit tests move the camera pov around.

That actually has very little to do with GRAPHICS. A "collision engine", like you're describing, is entirely mathematics and geometry, and it gets to be extremely complex stuff becuase the primary goal of doing mathematics in programming is to do it quickly, so although the functions and formulas are known, there are a multitude of different ways to optimize the processing.
Posts: 3486 | Registered: Sep 2002  |  IP: Logged | Report this post to a Moderator
Blayne Bradley
unregistered


 - posted            Edit/Delete Post 
havent had a math class in 3 years ^-^
IP: Logged | Report this post to a Moderator
ricree101
Member
Member # 7749

 - posted      Profile for ricree101   Email ricree101         Edit/Delete Post 
Weren't you in CS or something? How have you managed to avoid math?
Posts: 2437 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
Blayne Bradley
unregistered


 - posted            Edit/Delete Post 
there's only 2 math classes in the first year after that 0 more math.
IP: Logged | Report this post to a Moderator
Wonder Dog
Member
Member # 5691

 - posted      Profile for Wonder Dog           Edit/Delete Post 
fugu - I guess I was generalizing too much - sorry! Truth be told, algorithmic drawing and other forms of computer art are huge interests of mine. Thanks for the head's up on W. Bradford Paley. Have you seen any works by Joshua Davis?
Posts: 353 | Registered: Sep 2003  |  IP: Logged | Report this post to a Moderator
ricree101
Member
Member # 7749

 - posted      Profile for ricree101   Email ricree101         Edit/Delete Post 
quote:
Originally posted by Blayne Bradley:
there's only 2 math classes in the first year after that 0 more math.

Really? Most of the people I've known in CS programs had to take a fair amount of math.
Posts: 2437 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
Nighthawk
Member
Member # 4176

 - posted      Profile for Nighthawk   Email Nighthawk         Edit/Delete Post 
quote:
Originally posted by Blayne Bradley:
havent had a math class in 3 years ^-^

What kind of CS program are you taking then? When I did my run, every other class was math. And, if you are looking to game design, you'd better start taking more math courses.

Never taken Discrete Mathematics? Matrices and Vectors? 3D Geometry? Calculus?

Posts: 3486 | Registered: Sep 2002  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Wonder: Yeah, I noticed him when some of his creations made the geek news sites a while back. Actually, my work should look into partnering with Davis some -- I work in an information visualization (and network science, and scientometrics) lab, one of the co-creators of the map of science on paley's site was one of my co-workers, and the person who commissioned it was my boss.

Blayne: if you don't have a solid background in math (though this can be obtained by means other than coursework, coursework would probably be the best way), you cannot be a good games programmer at the level you're talking about. It isn't possible. Right now you couldn't do a good job with simple OpenGL, because being a good OpenGL programmer requires at least a minimal understanding of matrix algebra.

Now, most people in the industry who are programming games are not programming at that level, so that doesn't mean you can't be a games programmer. But you're not going to be doing any substantial work on game engines any time soon.

Has your program even taught you the math to learn how algorithmic complexity works?

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Blayne Bradley
unregistered


 - posted            Edit/Delete Post 
we worked with matrixes, binary, and other computer math/logic related stuff, tautologies.

Our CS program is a 3 year program designed to get people straight into the job market upon graduating, so it focuses on C++, Linux, Windows/Unix Networking, Multimedia (flash action script, html), ASP, a little bit of technical support, there has been very rare need for any sort of math beyond what was taught in first year.

"algorithmic complexity" not even sure what that is.

IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Whatever they call it, that isn't a computer science program, that's a computer programming program. Algorithmic complexity is one of the most basic notions in computer science.

As I said before, you don't have the math to be a good games programmer at the level you're talking about, but you could still be a games programmer, just not of game engine level stuff. I'd suggest starting by working on mods of or modules for some game you like to play that has good support for that. Supreme Commander would be a good place to start, it is an extremely moddable game.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
Bokonon
Member
Member # 480

 - posted      Profile for Bokonon           Edit/Delete Post 
To really grok 3D (or any math-intensive) programming, you need at least discrete math, linear algebra (which a course usually taken after 2 or 3 classes in calculus) and differential equations. Even though I didn't take it (to my regret), I'd strongly recommend a statistics course too.

I had to take 5 math courses, and there were several CS courses that had a good share of math: algorithms, computer system fundamentals, and some computer architecture courses.

You need math. Math is probably the most important discipline to learn for a CS guy. (For a CE guy, I'd say EE nudges it out, but only just barely)

-Bok

Posts: 7021 | Registered: Nov 1999  |  IP: Logged | Report this post to a Moderator
Dagonee
Member
Member # 5818

 - posted      Profile for Dagonee           Edit/Delete Post 
Required math for my CS undergrad: linear algebra, discrete math, algorithmic analysis, probability, and a choice of 2 out of 3 of algebraic coding, numerical analysis, or operations research (I took all three).

Calculus (through 3-D) was a pre-requisite to many of these courses, so it was required.

And this was a minor (albeit a hefty minor).

Posts: 26071 | Registered: Oct 2003  |  IP: Logged | Report this post to a Moderator
Bokonon
Member
Member # 480

 - posted      Profile for Bokonon           Edit/Delete Post 
My BS in CS required 20 credits (each math class was 4 credits), the BA required 16, I think. I had AP'ed out of Calc 1, and so took Calc 2 & 3, linear algebra, differential equations (the level one class), and discrete math.

Algorithms had the introduction to Big-O notation and the like. Computational Models was essentially discrete math applied to computer theory (All about P, NP, NP-hard problems, plus Turing machine stuff). The computer architecture had a lot of math around algorithms for cache strategies and the like.

Taking a 3D programming course without linear algebra seems to me to be the equivalent of some sort of slow torture technique... That you pay for!

-Bok

Posts: 7021 | Registered: Nov 1999  |  IP: Logged | Report this post to a Moderator
NotMe
Member
Member # 10470

 - posted      Profile for NotMe   Email NotMe         Edit/Delete Post 
I'll add my assurances that linear algebra and multivariable calculus are absolutely required to get started with any 3d graphics engine programming, and a good differential equations class on top of that before you will be able to write a physics engine. And if you want to be able to produce a serious 3d game engine, you really ought to pick up a BS in applied math first.

You're obviously very interested in computer science and programming, and it is obvious that you're in the wrong program for it. There's no polite way to break it to you, but you either need to transfer or severely cut down your expectations. This program will only prepare you for low-level programming and IT jobs, not actual software design and engineering.

Posts: 145 | Registered: Apr 2007  |  IP: Logged | Report this post to a Moderator
HollowEarth
Member
Member # 2586

 - posted      Profile for HollowEarth   Email HollowEarth         Edit/Delete Post 
Lets lay off just a little bit. You can do a far bit with just some basic linear algebra. He's obviously not going to recreate the unreal engine or anything, but you certainly don't need a bachelors in applied math to play with some of the basics.

Maybe start by looking at these? Its only in 2D, but you've got to start somewhere. And its not like there is any lack of game programing tutorials on the interweb.

Posts: 1621 | Registered: Oct 2001  |  IP: Logged | Report this post to a Moderator
ricree101
Member
Member # 7749

 - posted      Profile for ricree101   Email ricree101         Edit/Delete Post 
http://www.gamedev.net

This site has a lot of great articles, although you would definitely do well with learning the equivelant of at least an introductory linear algebra class. Learning algorithmic complexity is absolutely essential to be able to do any serious software design. I'm assuming you've taken a data structures course. It really should have had at least a little discussion of the complexity of the structures in terms of both size and performance.

[ September 21, 2007, 08:59 PM: Message edited by: ricree101 ]

Posts: 2437 | Registered: Apr 2005  |  IP: Logged | Report this post to a Moderator
King of Men
Member
Member # 6684

 - posted      Profile for King of Men   Email King of Men         Edit/Delete Post 
The amount of linear algebra you need to use OpenGL can be picked up from the Red Book; all the matrix algebra is built into the library anyway. Although admittedly it's very useful to be familiar with the basic concepts, or you can't debug properly. However, you absolutely must know about algorithmic complexity, or you end up like Shlemiel the Painter. I'm afraid your course has prepared you very well to be a code monkey, and not at all to be an actual programmer. You've mad the mistake of picking a Java school, and now you know how to be part of the Blub. Unfortunately you need a bit more than that to make good games. You can pick it up outside of school, but only if you don't go about thinking you're qualified. So don't.
Posts: 10645 | Registered: Jul 2004  |  IP: Logged | Report this post to a Moderator
TomDavidson
Member
Member # 124

 - posted      Profile for TomDavidson   Email TomDavidson         Edit/Delete Post 
*laugh* If it's any consolation, Blayne, being a "code monkey" and a "Blub" programmer is perfectly enjoyable.
Posts: 37449 | Registered: May 1999  |  IP: Logged | Report this post to a Moderator
fugu13
Member
Member # 2859

 - posted      Profile for fugu13   Email fugu13         Edit/Delete Post 
Heh, IU has long been teaching intro CS with scheme, and now they've moved to Scheme first and Java second for the two intro courses -- so students will get introduced to an imperative language with static typing and can transition to C++ more easily, plus be able to say they know Java.

Its actually pretty exciting times, here. In the graduate program and labs on campus, some of the major new developments in programming languages are under works, including C++. For instance, one postdoc guy here wrote the paper (with Stroustroup and others as coauthors) proposing the next generation of generic programming for C++0x, concepts. The same guy maintains four or five of the boost libraries.

Btw, Blayne, if you want to become a really good C++ programmer, look at the boost libraries. You should be using them in your code, because they're generally some of the best libraries (for the purposes they tackle, which are legion) out there, and you should be reading their source, because it is typically enlightening.

Another really interesting thing going on is work in synthetic programming (in this case using Python): http://www.osl.iu.edu/~chemuell/sp-abstract.html

Its not quite the same thing, but just as ctypes revolutionized the interface between C and Python, the synthetic programming work is going to revolutionize the ability of Python to use super-fast assembly constructs to do the most computationally intensive parts of its work.

Posts: 15770 | Registered: Dec 2001  |  IP: Logged | Report this post to a Moderator
King of Men
Member
Member # 6684

 - posted      Profile for King of Men   Email King of Men         Edit/Delete Post 
quote:
Originally posted by TomDavidson:
*laugh* If it's any consolation, Blayne, being a "code monkey" and a "Blub" programmer is perfectly enjoyable.

Well, I suppose by comrade Graham's standards I'm a Blub programmer too. But the point is, you really cannot be doing everything at the superficial highly-abstract level that Blayne is apparently learning at. Sometimes you really do need to know what's going on with the bits!
Posts: 10645 | Registered: Jul 2004  |  IP: Logged | Report this post to a Moderator
Bokonon
Member
Member # 480

 - posted      Profile for Bokonon           Edit/Delete Post 
I will reiterate what Tom said. But I will also say that graphics programming is hard; it just isn't the only (or even most of) programming job.

-Bok

Posts: 7021 | Registered: Nov 1999  |  IP: Logged | Report this post to a Moderator
Nighthawk
Member
Member # 4176

 - posted      Profile for Nighthawk   Email Nighthawk         Edit/Delete Post 
I spent two years at a horribly bad CS program at the University of Miami. I was already experienced before I even started college, and was already doing trivial game design and applications development for, among others, IBM. I was so disillusioned by the curriculum and the way they were handling things that I never finished my degree.

Of course, this was 1989-1993, so times have changed I imagine.

I understand your interest in doing graphic and game development because it sounds "fun". Hell, I do it every chance I get, but in the business world I've been more successful writing warehouse management systems, invoice generators, reporting systems, etc... Fun? Arguably no, but worth it.

Posts: 3486 | Registered: Sep 2002  |  IP: Logged | Report this post to a Moderator
Dagonee
Member
Member # 5818

 - posted      Profile for Dagonee           Edit/Delete Post 
quote:
in the business world I've been more successful writing warehouse management systems, invoice generators, reporting systems, etc... Fun? Arguably no, but worth it.
Is it weird that I think writing systems like that is actually fun?
Posts: 26071 | Registered: Oct 2003  |  IP: Logged | Report this post to a Moderator
Nighthawk
Member
Member # 4176

 - posted      Profile for Nighthawk   Email Nighthawk         Edit/Delete Post 
It's as fun as you make it, I guess. There are certain aspects of it that were "fun". For example, I had a field day creating an algorithm to determine where freight should go in a warehouse based on dimensions, weight, distance to loading dock, etc...

Writing code to generate fifteen virtually identical reports... not so fun. And there's not much algorhythm planning in a "data in, data out" invoicing system.

Posts: 3486 | Registered: Sep 2002  |  IP: Logged | Report this post to a Moderator
Tstorm
Member
Member # 1871

 - posted      Profile for Tstorm   Email Tstorm         Edit/Delete Post 
quote:
Is it weird that I think writing systems like that is actually fun?
Not at all. I think creating 'systems' is actually fun. Hard work, granted. Programming is a lot like solving puzzles, I think. The chief difference being: sometimes you don't know where all the pieces are when you start out.
Posts: 1813 | Registered: Apr 2001  |  IP: Logged | Report this post to a Moderator
King of Men
Member
Member # 6684

 - posted      Profile for King of Men   Email King of Men         Edit/Delete Post 
Any programming job involves a certain amount of boilerplate - IO, GUI, logging, what-have-you - and some amount of fun algorithmic stuff. I must say I would expect games to have a rather larger proportion of fun algorithmic stuff, because with invoice generators the IO is the actual purpose of the system, and anything clever you do is just supporting that. But it's not all fun and games, by any means.
Posts: 10645 | Registered: Jul 2004  |  IP: Logged | Report this post to a Moderator
TomDavidson
Member
Member # 124

 - posted      Profile for TomDavidson   Email TomDavidson         Edit/Delete Post 
The funny thing to me is that I love designing good IO, and elaborate math bores me absolutely to tears. [Smile]
Posts: 37449 | Registered: May 1999  |  IP: Logged | Report this post to a Moderator
   

   Close Topic   Feature Topic   Move Topic   Delete Topic next oldest topic   next newest topic
 - Printer-friendly view of this topic
Hop To:


Contact Us | Hatrack River Home Page

Copyright © 2008 Hatrack River Enterprises Inc. All rights reserved.
Reproduction in whole or in part without permission is prohibited.


Powered by Infopop Corporation
UBB.classic™ 6.7.2