Jump to content

  • Log In with Google      Sign In   
  • Create Account

A book to match with “Mathematics for 3D Game Programming and Computer Graphics”


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
18 replies to this topic

#1   Members   -  Reputation: 121

Like
0Likes
Like

Posted 12 December 2013 - 01:07 PM

Hello,
I'm going to buy "Mathematics for 3D Game Programming and Computer Graphics" book.
 
I hope it is possible for me to put in practice with java the mathematical concepts within the book, 
since I'm studying java.
I was wondering if there was an appropriate book to match with this book that is not outdated.
 
Two books I found to seem interesting are "Developing Games in Java" but is from 2004
and "Learning Libgdx Game Development". The last would be perfect if it were not for the fact that Libgdx still
does't fully support 3d (The book in fact stops at the development of 2d graphics).
 
Waiting for Libgdx news, what book would you recommend to read in the meantime?
I also tried to find some books about OpenGL and shader for java, but most of the books stops at 2004.
 
I hope I have expressed myself correctly, thank you for your attention.


#2   Members   -  Reputation: 606

Like
2Likes
Like

Posted 12 December 2013 - 02:16 PM

Hi Robz,

 

as an experienced Java developer ( I am working professionally with java for about 10 years ) I does not recommend you to stick with java if you intent to use OpenGL and accelerated graphics...

 

Btw, if you insist using java for low level graphic programming, you may check this sites:

 

http://lwjgl.org/ -> A OpenGL binding for java ( or java binding for OpenGL? ) focused on game development.

 

and of course, you may check the http://opengl.org site ( http://www.opengl.org/wiki/Language_bindings#Java )

 

Anyway, you may be able to apply this Math Concepts with java, as you can do in any programming languages. Java is a good programming language, very versatile and very productive for business and server side applications, I really love java programming.... BUT, for graphical clients its not the best choice, its viable, but not the best thing to put so much effort....

 

I think there is a reasonable engine ( Java Monkey Engine - http://jmonkeyengine.org/ ) that you may use if you really want to stick with java!

 

Hope it helps.

 

( well... sry about my poor english )



#3   Crossbones+   -  Reputation: 6633

Like
4Likes
Like

Posted 12 December 2013 - 04:38 PM

Not a book recommendation, but I've done a 14 part and counting LibGDX tutorial series that certainly fits your description.  Better yet, it's free. :)



#4   Crossbones+   -  Reputation: 8706

Like
3Likes
Like

Posted 12 December 2013 - 09:10 PM

Im 90% certain you simply won't find an book using Java and modern OpenGL at the same time. Its just a thing that doesn't gets mixed often enough to merit a book specifically for it apparently.

 

In any case, the 2nd best thing you can get is an "plain" OpenGL book, which will probably use C++. Remember,  the important bit is not the language used, but the OpenGL calls and how to use them. Then, with a thin wrapper like LWJGL (which expose OpenGL calls as similar as they can be with respect to the C OpenGL API) you can practice the concepts you learn.

 

I link LWJGL because that's the one I've used, there is also JOGL, you can try both. OpenGL calls will be the same, you'll still upload the data to your GPU, set attribute pointers, make your draw calls, code shaders, and so on.

 

You might want to get your feet wet before going through an entire book of OpenGL, you can learn quite a bit of it from here Arcsynthesis OpenGL Online Book. It explains all the basics of OpenGL plus the math involved in all of those operations. IMO is the best "free" OpenGL resource out there for learning the basics at the moment. Have in mind that it will cost you a bit more since you'll have to look at the C++ code and try to come up with equivalents in Java + whatever OpenGL wrapper you're using, but such are the perils of starting 3D programming in a language that isn't popular for 3D programming :D

 

If you don't like Java enough to do all this jumping around, switch to other language that will make it easier.


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#5   Members   -  Reputation: 1077

Like
3Likes
Like

Posted 13 December 2013 - 12:53 AM

Just like the others have said above, you'll have a hard time finding a book for 3D graphics mathematics in Java. Also, as others have stated, LWJGL is a good place to start if you want to access OpenGL using Java -- this is what I'm using, and just because I'm more familiar with Java, I can get better performance with that language than with C++ (note I said with my experience; C++ will always be faster, its just that I know Java and how it works much, much better and can plan for that and I can program better using Java).

 

Also, there's the JMonkeyEngine Source Repository that you can always look at for examples (src is in the trunk folder). JMonkeyEngine is the source for an engine written in Java using OpenGL, and you can check out how they write their algorithms for mathematical computations (it's how I learned quaternions). It will take a little more work on your part (you need to navigate the source code) but you can learn sooooo so much from reading the source -- and it's in Java!! Check it out if you feel like it'll help :)

 

ST



#6   Members   -  Reputation: 121

Like
3Likes
Like

Posted 13 December 2013 - 03:37 AM

Thanks for all your advices, I will consider each of them.
Given that at the moment I think at the 3D programming just as a hobby, I think there is no such a problem in placing the slow study of another language like c++ side by java.
If I were to use in the future Libgdx with OpenGl, it will mean that I will lose a little more time.
 
I'll try to start training with some free tutorials, such as those you mentioned, and then continue with the books.
I knew Arcsynthesis OpenGL Online Book, but in my computer it has always given me problems in the compilation of examples via the command line, although I have followed the instructions step by step.
Anyway, since I'm about to order that book, at the end I think I'll take it together with More OpenGL Game Programming.
Anybody who has had the opportunity to read it or knows about it?


#7   Moderators   -  Reputation: 8596

Like
1Likes
Like

Posted 13 February 2014 - 11:03 AM


Im 90% certain you simply won't find an book using Java and modern OpenGL at the same time. Its just a thing that doesn't gets mixed often enough to merit a book specifically for it apparently.

 

I'm actually thinking about writing that book next.  Maybe it is time.  I've been fighting with JOGL the last week.  It is not fun, and not very well documented.


I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532


#8   Crossbones+   -  Reputation: 8706

Like
0Likes
Like

Posted 13 February 2014 - 05:45 PM

That would be pretty nice :D (as long as its core profile, OGL 3+ of course :P)

 

JOGL is going for quite a bit more than "just" an OpenGL wrapper right? I've read they support interop with Swing/AWT. Not sure if they're also planning something with JavaFX.

 

LWJGL is currently in the middle of a rewrite, that nobody knows of unless they visit LWJGL 3 repo. And I'm not sure how similar the API will be compared to LWJGL 2. LibGDX guys said they'll jump to LWJGL 3 once LWJGL devs said its stable enough.

 

 It is not fun, and not very well documented.
Yeah, you get tons of resources dealing with your first triangle, OpenGL 1.1 style, and then an big empty void after that. Hell I never knew about LWJGL debug mode until very recently when I saw it in the sources and googled it, and I started using LWJGL one year ago.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#9   Members   -  Reputation: 1077

Like
0Likes
Like

Posted 13 February 2014 - 06:32 PM


Hell I never knew about LWJGL debug mode until very recently when I saw it in the sources and googled it, and I started using LWJGL one year ago.

 

Thank you, good sir :D



#10   Members   -  Reputation: 273

Like
0Likes
Like

Posted 13 February 2014 - 09:03 PM


Im 90% certain you simply won't find an book using Java and modern OpenGL at the same time. Its just a thing that doesn't gets mixed often enough to merit a book specifically for it apparently.

 

So I have the great awesomeness that is Safari Books Online (safaribooksonline.com) - a full subscription (by the way, any U.S. Army vets get this resource for free, and damn is it an awesome technical manual resource).  - based on what I see, there's a good amount of books out there dealing with Android game development that use Java and OpenGL in their tutorial code, or rather specific sections if you will.  They don't cover both in the whole book, but usually carve out sections of the book specified for Java + OpenGL.  So you might find some gems in Android development books.



#11   Members   -  Reputation: 520

Like
0Likes
Like

Posted 13 February 2014 - 11:55 PM

Old topic, but I have to comment :-)

 

That book (Mathematics for 3D Game programming and Computer Graphics) is simply awesome. There is a 2nd edition as well.

 

I have programmed many languages. In decreasing order of lines of code written, I would list them as: C++, C#, various Basic's (mostly Visual Basic), Java, Assembly, JavaScript, and then 'the rest.'

 

My favorite is C++, as I am somewhat of an optimization nut, but I learned long ago (perhaps with the first release of Visual Basic) that sometimes the choice of language/environment should be made so as to speed development, and not the program.

 

Hence, I have been using Java a lot lately, particularly for a game project I am working on.  Sure, there are a few [small] challenges, such as avoiding the garbage collector as much as possible, but in truth, modern games are almost always GPU bound, and language choice has almost no impact on that.  I picked Java because I can get Windows, Mac and Linux with a single build, and then with just a small port I can add Android.  That's a lot of platforms with little work.

 

I have several friends and associates writing similar projects in C++.  Although we haven't done a truly scientific comparison, we do compare frame rates and amount of geometry rendered, and I handily beat them--by large margins--every time.  This is because, as I said, the performance has nothing to do with the language; it's all about yoru algorithms and use of the GPU.

 

Of course if your game has thousands of AI units, or some non-traditional physics you can't do on the GPU, you will suffer some loss in performance in Java vs. C++ (assuming a very high level of skill in both)--I can always write C++ code that beats Java code.  But I haven't yet found a case where it matters.

 

Honestly, I am always on the lookout for cases where I need a lower level language, something I could use to justify the pain of porting C++ to different platforms. I just haven't found it yet.

 

So my advice is to push on with Java, buy the book you mentioned, and post here if you have language-specific issues (or PM me; I will surely get that, whereas my presence in the forums is spotty).

 

Also, read my post in the OpenGL section about "JOGL vs. LWJGL," if you're considering one of those. (http://www.gamedev.net/topic/653356-jogl-vs-lwjgl-for-java-an-experience/)



#12   Crossbones+   -  Reputation: 8706

Like
0Likes
Like

Posted 14 February 2014 - 01:27 AM

 


Hell I never knew about LWJGL debug mode until very recently when I saw it in the sources and googled it, and I started using LWJGL one year ago.

 

Thank you, good sir biggrin.png

 

http://www.lwjgl.org/wiki/index.php?title=LWJGL_Hidden_Switches You're welcome.

 

Library path property is really useful for deploying. No need for separate jars, just put everything in it and decide at runtime what to load.


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#13   Members   -  Reputation: 574

Like
0Likes
Like

Posted 14 February 2014 - 09:16 AM

2 more cents:

 

Java and OpenGL are not the route to go for desktops. BUT: I've you'll ever do any games for Android, java and OpenGL ES work out quite nicely. You'll even get tons of good resources on Google's Android developer pages!


Go on, feed your brain: http://poroba.com/flip/flipz.php


#14   Crossbones+   -  Reputation: 6633

Like
0Likes
Like

Posted 14 February 2014 - 09:23 AM

2 more cents:

 

Java and OpenGL are not the route to go for desktops. BUT: I've you'll ever do any games for Android, java and OpenGL ES work out quite nicely. You'll even get tons of good resources on Google's Android developer pages!

 

Why?



#15   Members   -  Reputation: 574

Like
0Likes
Like

Posted 14 February 2014 - 09:47 AM

 

2 more cents:

 

Java and OpenGL are not the route to go for desktops. BUT: I've you'll ever do any games for Android, java and OpenGL ES work out quite nicely. You'll even get tons of good resources on Google's Android developer pages!

 

Why?

 

 

Why for Android? Java is the language Android apps are written in natively (you can go C++ in a NDK but that's ... cumbersome). The OpenGL integration on Android is quite capable and for games you might need the extra capabilities and speed.

 

What I was trying to say is: If you do want to do OpenGL with Java, Android might be a good platform for that particular combination. Also, while I do not know of a book, you'll at least get decent documentation from Google. So: Might be a good start.


Go on, feed your brain: http://poroba.com/flip/flipz.php


#16   Members   -  Reputation: 520

Like
0Likes
Like

Posted 14 February 2014 - 11:16 AM

I agree with you, KoMaXX: Android is a great platform to work on.  However, going that route, I would grab a newer device with Android 4.4 or later and explicit hardware support for ES 3.0.  At present, 7.6% of actively used Android devices support ES 3.0, and by the time anybody could release a game, that number will be much higher.

 

The advantage here is that you can write desktop code against GL 3.x and easily port to ES 3.0 on Android. You also get some very important and useful improvements to the API (array textures, instancing... it's actually quite a long list).

 

There are a lot of books about game development in Android, most use just Java and avoid the NDK.



#17   Crossbones+   -  Reputation: 6633

Like
0Likes
Like

Posted 14 February 2014 - 03:38 PM

 

 

2 more cents:

 

Java and OpenGL are not the route to go for desktops. BUT: I've you'll ever do any games for Android, java and OpenGL ES work out quite nicely. You'll even get tons of good resources on Google's Android developer pages!

 

Why?

 

 

Why for Android? Java is the language Android apps are written in natively (you can go C++ in a NDK but that's ... cumbersome). The OpenGL integration on Android is quite capable and for games you might need the extra capabilities and speed.

 

What I was trying to say is: If you do want to do OpenGL with Java, Android might be a good platform for that particular combination. Also, while I do not know of a book, you'll at least get decent documentation from Google. So: Might be a good start.

 

 

No, I meant why was OpenGL + Java on dekstop not the route to go.



#18   Members   -  Reputation: 574

Like
0Likes
Like

Posted 17 February 2014 - 04:25 AM

Oh, right.

 

Well, mostly because it's rarely done. The de facto standard for OpenGL programming on desktop is C++, so you'll get the best resources (documentation, tutorials) and help from other developers there. Also, if you don't want to do everything from scratch, there are way more libs / modules / code snippets if you go C++.

 

So: Java+OpenGL on Desktop can be done but it's unusual and thus not as well supported.


Go on, feed your brain: http://poroba.com/flip/flipz.php


#19   Members   -  Reputation: 190

Like
0Likes
Like

Posted 17 February 2014 - 09:58 AM

check you this dude http://www.youtube.com/channel/UCEhBM2x5MG9-e_JSOzU068w

he makes some good videos on genereal math that are used in 3d / 2d game development and some vary advance stuff






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