• Advertisement

Archived

This topic is now archived and is closed to further replies.

OpenGL Questions for people who know OpenGL pretty well!!!

This topic is 5278 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

hey guys, I have been programming in OpenGL for about 6 months. I have read tutorials on several of the website. They were great, especially NeHe''s, but they only take to a certain level. I am at a level where I can create a 3d object and do alpha blending, lighting, texturing and all other low level stuff. I can''t seen to go anywhere from here. So I have a question to ask you OpenGL programmers. How did you go about learn OpenGL and what step did you took to get to the level you''re at. I would also like to know the following things: I do i go about programming a level in OpenGL. Are there any tutorials that I can help with this process. Thanks for your replys.

Share this post


Link to post
Share on other sites
Advertisement
See the problem with this is that i dont know how to program that. Is there a website that explains the process of creating complex object or even my own format.

Thanks again for your replys.

Share this post


Link to post
Share on other sites
I learnt by programming a simple 3D game, referring to the OpenGL pages on MSDN.

If you''ve done a lot of tutorials, it''s probably time you weened yourself off them. Tutorials are okay if you want to get your feet wet, but at some point you need to learn to think for yourself. Copying and pasting really doesn''t teach you that much.

Share this post


Link to post
Share on other sites
quote:
Original post by vish40
See the problem with this is that i dont know how to program that. Is there a website that explains the process of creating complex object or even my own format.

Thanks again for your replys.


Oh dear. My initial suspicion was correct: you're a copy and paste programmer without a clue about designing your own code. Perhaps you should just learn to program instead. Before you ask, no, there isn't a web page which will teach you how to program. You need to learn yourself.

When you have some more specific questions, come back and ask them, and I'm sure we'll do our best to help you out.

[edited by - benjamin bunny on September 2, 2003 7:48:36 PM]

Share this post


Link to post
Share on other sites
I don't think you guys are being fair to this poster. He's not asking for another tutorial, he's asking for some ideas as to where to proceed. Even if you're not copying & pasting, you still burrow other people's ideas. Nobody wants to reinvent the wheel, except maybe for a purely academic challange.

vish40: If you're feeling adventurous, you can try your hand at loading an existing file format, such as Quake2 BSP. There are documents for doing this such as:

http://www.flipcode.com/tutorials/tut_q2levels.shtml

This shows you not only how to read in a specific format (so you can use existing artwork to develop your own rendering techniques) but also what information goes into the level besides geometry.

If you keep your loading code moderatly separate from your drawing code, you can always go back and replace or extend the file format later.

Hope that helps.

Tom

[edited by - ParadigmShift on September 2, 2003 7:58:08 PM]

[edited by - ParadigmShift on September 2, 2003 7:59:38 PM]

[edited by - ParadigmShift on September 2, 2003 8:01:26 PM]

Share this post


Link to post
Share on other sites
As for models, I''ve learned a lot from a book called Focus on 3D Models by PremierPress. In the book they go over the concept in a pretty API-Independent way, and then you can go to the CD for the examples written using OpenGL. It is another book, but you might actually walk way understanding what your doing rather than guessing, or cutting and pasting. It goes over most of the major format, i.e. .OBJ (MAYA), .3DS (3DS Max), .MD2 (Quake 2), .MD3 (Quake 3), MDL (half-life), etc.

There are plenty of websites available as well to learn the level-rendering stuff like GameTutorials.com. There is also another book by the same company called Focus on Terrain someting where it teaches you several methods for generating terrain algorithimically. When it comes down to it, we all get our ideas from someone else. Even John Carmack has stated that all he does is embrace and extend other''s ideas.

Kill ''''em all!!! Let Allah sort em out

Share this post


Link to post
Share on other sites
What you really need is not another programming resource.

As benjamin bunny stated, copying and pasting won't take you very far.

What you really need is a project, such as a simple game or demo program. Another source of programming projects is employment, but generally the projects are dictated to you. At your level, a simple game or demo is probably what you should be looking into.


[edited by - jeeky on September 2, 2003 9:16:30 PM]

Share this post


Link to post
Share on other sites
The best thing to do is set out to create some small demo. You will encounter many specific problems that you will have to find the answer to. Basically you have to learn by doing.


A CRPG in development...

Need help? Well, go FAQ yourself.


"Just don''t look at the hole." -- Unspoken_Magi

Share this post


Link to post
Share on other sites
quote:
Original post by vish40
hey guys,
I have been programming in OpenGL for about 6 months. I have read tutorials on several of the website. They were great, especially NeHe''s, but they only take to a certain level. I am at a level where I can create a 3d object and do alpha blending, lighting, texturing and all other low level stuff. I can''t seen to go anywhere from here.

So I have a question to ask you OpenGL programmers. How did you go about learn OpenGL and what step did you took to get to the level you''re at.

I would also like to know the following things:
I do i go about programming a level in OpenGL.
Are there any tutorials that I can help with this process.

Thanks for your replys.



to answer you instead of bashing you (yes, every once in a while i am on that side of the fence):

if you have followed and understood the NeHe stuff, your next step might be to put it all together. using the stuff you learned, work out a small project you want to do (or even just simple demo things to test your skills) and try to implement it.

there are books you can buy or download (depending on the book) to learn more about openGL. there are more tutorials and such on the internet, but most don''t go further then NeHe''s and aren''t as good anyway.

as for model loading, you will have to look up the file format you want to use (try the "wotsit" site affiliated with gamedev, i don''t remember the URL) and write a function to load such a file into memory and draw it with OpenGL. creating your own format might be simpler, but then you also have to write the editor program, or a plugin to export it from another editor, which is a pain.

after you have tried some of these things, more specific questions will hopefully be answered here for you in a nicer manner.

Share this post


Link to post
Share on other sites
Hey dude..

I have been working on a model format now. Its part of my engine for opengl. I have been using flexporter with 3dstudios. I would love some help with this. I have a fair amount done already. Email me at zander@echotech.ca

Later, ben

Share this post


Link to post
Share on other sites
Oh, almost forgot.

May i remind everybody about learning GL is a lot like learning c++. At first you are scared of it then after a few months you start to get a good grip, you have the syntex down and know a few things. At that point you start to wonder what seperates you from the game programers and have no idea how to get there. Its not until you have been doing it for the next few months and you are wondering why your copy of pong is not running as fast as quake as you start to realize that you don''t know anything and now is the time to really learn.
I am getting the feeling he is at the last stage. Hes got the syntex and starting to feel confortable and wants to know what the next step is.

Later, ben

Share this post


Link to post
Share on other sites
Vish''s prob is the same of mine. I''m tryin to discover how to read models. I want to know the model first. After i try to use some ready code!

Share this post


Link to post
Share on other sites
quote:
Original post by zander76
At that point you start to wonder what seperates you from the game programers and have no idea how to get there. Its not until you have been doing it for the next few months and you are wondering why your copy of pong is not running as fast as quake as you start to realize that you don''t know anything and now is the time to really learn.
I am getting the feeling he is at the last stage. Hes got the syntex and starting to feel confortable and wants to know what the next step is.


If he feeling comfortable with OpenGL why doesnt he start learning a little bit about culling?

here are some links:
http://www.gamedev.net/reference/programming/features/quadtrees/
http://www.flipcode.com/misc/SamuelRanta-Eskola_BSPTrees.pdf
http://crystal.sourceforge.net/csdocs/portal.html

Implamenting quadtree culling in your terrain renderer isnt as hard as you would think it is.




www.Vision-Software.org

Share this post


Link to post
Share on other sites
Well the first thing I did when I reached this stage was start making a project. I personally made a 3D solar system thingy, but you might prefer to make a game or something. Just choose something like remaking pacman or tetris or the like. You''ll find each project has it''s own set of challenges. With pacman for instance you might choose to look into some simple AI approaches to get your ghosts to navigate the maze. When you start making a full blown project, I can guarantee you''ll run into difficulties you wouldn''t have considered when running small test apps.

Once you''ve done a bit of playing around and made a few small projects (don''t underestimate how important it is to do this) I''d suggest learning about vector/matrix math, and all the cool stuff that flows on from that, like culling, ray tracing, and collision detection. Once you''re down with most of this, make your own set of classes to do this math, and build yourself a simple raytracer and/or collision system.

Share this post


Link to post
Share on other sites
If some basic informations about a model are enaught for you (vertices, UV coords, textures uset by the model, normal, ...) you can try to write a simple script for 3DStudio. Some time ago I did this and I found it not too complex (10/15 hours to learn basic concepts and write the script). My script simply wrote a text file with those informations. Loading it is then very simple. You could do this till you feel to be ready for something more advanced.
Just to test your program with a differten model (bored by cubes?:-)
Good Luck!

Share this post


Link to post
Share on other sites
I think its best just to get the concepts
of how open gl works and then to start doing
some projects using the opengl features.

Do a cool project wher you can display
an object then add texures and then environment mapping.
come up with your own coloring scheme. Also
study light physics such as reflection and refraction.
I thinks thats good for the basics. plus its fun.

Share this post


Link to post
Share on other sites

  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By LifeArtist
      Good Evening,
      I want to make a 2D game which involves displaying some debug information. Especially for collision, enemy sights and so on ...
      First of I was thinking about all those shapes which I need will need for debugging purposes: circles, rectangles, lines, polygons.
      I am really stucked right now because of the fundamental question:
      Where do I store my vertices positions for each line (object)? Currently I am not using a model matrix because I am using orthographic projection and set the final position within the VBO. That means that if I add a new line I would have to expand the "points" array and re-upload (recall glBufferData) it every time. The other method would be to use a model matrix and a fixed vbo for a line but it would be also messy to exactly create a line from (0,0) to (100,20) calculating the rotation and scale to make it fit.
      If I proceed with option 1 "updating the array each frame" I was thinking of having 4 draw calls every frame for the lines vao, polygons vao and so on. 
      In addition to that I am planning to use some sort of ECS based architecture. So the other question would be:
      Should I treat those debug objects as entities/components?
      For me it would make sense to treat them as entities but that's creates a new issue with the previous array approach because it would have for example a transform and render component. A special render component for debug objects (no texture etc) ... For me the transform component is also just a matrix but how would I then define a line?
      Treating them as components would'nt be a good idea in my eyes because then I would always need an entity. Well entity is just an id !? So maybe its a component?
      Regards,
      LifeArtist
    • By QQemka
      Hello. I am coding a small thingy in my spare time. All i want to achieve is to load a heightmap (as the lowest possible walking terrain), some static meshes (elements of the environment) and a dynamic character (meaning i can move, collide with heightmap/static meshes and hold a varying item in a hand ). Got a bunch of questions, or rather problems i can't find solution to myself. Nearly all are deal with graphics/gpu, not the coding part. My c++ is on high enough level.
      Let's go:
      Heightmap - i obviously want it to be textured, size is hardcoded to 256x256 squares. I can't have one huge texture stretched over entire terrain cause every pixel would be enormous. Thats why i decided to use 2 specified textures. First will be a tileset consisting of 16 square tiles (u v range from 0 to 0.25 for first tile and so on) and second a 256x256 buffer with 0-15 value representing index of the tile from tileset for every heigtmap square. Problem is, how do i blend the edges nicely and make some computationally cheap changes so its not obvious there are only 16 tiles? Is it possible to generate such terrain with some existing program?
      Collisions - i want to use bounding sphere and aabb. But should i store them for a model or entity instance? Meaning i have 20 same trees spawned using the same tree model, but every entity got its own transformation (position, scale etc). Storing collision component per instance grats faster access + is precalculated and transformed (takes additional memory, but who cares?), so i stick with this, right? What should i do if object is dynamically rotated? The aabb is no longer aligned and calculating per vertex min/max everytime object rotates/scales is pretty expensive, right?
      Drawing aabb - problem similar to above (storing aabb data per instance or model). This time in my opinion per model is enough since every instance also does not have own vertex buffer but uses the shared one (so 20 trees share reference to one tree model). So rendering aabb is about taking the model's aabb, transforming with instance matrix and voila. What about aabb vertex buffer (this is more of a cosmetic question, just curious, bumped onto it in time of writing this). Is it better to make it as 8 points and index buffer (12 lines), or only 2 vertices with min/max x/y/z and having the shaders dynamically generate 6 other vertices and draw the box? Or maybe there should be just ONE 1x1x1 cube box template moved/scaled per entity?
      What if one model got a diffuse texture and a normal map, and other has only diffuse? Should i pass some bool flag to shader with that info, or just assume that my game supports only diffuse maps without fancy stuff?
      There were several more but i forgot/solved them at time of writing
      Thanks in advance
    • By RenanRR
      Hi All,
      I'm reading the tutorials from learnOpengl site (nice site) and I'm having a question on the camera (https://learnopengl.com/Getting-started/Camera).
      I always saw the camera being manipulated with the lookat, but in tutorial I saw the camera being changed through the MVP arrays, which do not seem to be camera, but rather the scene that changes:
      Vertex Shader:
      #version 330 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; out vec2 TexCoord; uniform mat4 model; uniform mat4 view; uniform mat4 projection; void main() { gl_Position = projection * view * model * vec4(aPos, 1.0f); TexCoord = vec2(aTexCoord.x, aTexCoord.y); } then, the matrix manipulated:
      ..... glm::mat4 projection = glm::perspective(glm::radians(fov), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); ourShader.setMat4("projection", projection); .... glm::mat4 view = glm::lookAt(cameraPos, cameraPos + cameraFront, cameraUp); ourShader.setMat4("view", view); .... model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f)); ourShader.setMat4("model", model);  
      So, some doubts:
      - Why use it like that?
      - Is it okay to manipulate the camera that way?
      -in this way, are not the vertex's positions that changes instead of the camera?
      - I need to pass MVP to all shaders of object in my scenes ?
       
      What it seems, is that the camera stands still and the scenery that changes...
      it's right?
       
       
      Thank you
       
    • By dpadam450
      Sampling a floating point texture where the alpha channel holds 4-bytes of packed data into the float. I don't know how to cast the raw memory to treat it as an integer so I can perform bit-shifting operations.

      int rgbValue = int(textureSample.w);//4 bytes of data packed as color
      // algorithm might not be correct and endianness might need switching.
      vec3 extractedData = vec3(  rgbValue & 0xFF000000,  (rgbValue << 8) & 0xFF000000, (rgbValue << 16) & 0xFF000000);
      extractedData /= 255.0f;
    • By Devashish Khandelwal
      While writing a simple renderer using OpenGL, I faced an issue with the glGetUniformLocation function. For some reason, the location is coming to be -1.
      Anyone has any idea .. what should I do?
  • Advertisement