Archived

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

Stranger

OpenGL Resolving OpenGL Issues.

Recommended Posts

Stranger    160
I have read that DX has many high level function for rotation or translation while in OpenGL you must specify the matrices yourself.However in the book "OpenGL Superbible" the author uses high level rotation functions like glrotatef() etc. What I want you people to clear for me is what is going on with this thing. Also,where can I find information about functions that load models?

Share this post


Link to post
Share on other sites
Null and Void    1088
quote:
Original post by Stranger
However in the book "OpenGL Superbible" the author uses high level rotation functions like glrotatef() etc.

What I want you people to clear for me is what is going on with this thing.

What do you mean? Do uou want to know how glRotatef works? See this for more information.

quote:
Original post by Stranger
Also,where can I find information about functions that load models?

OpenGL doesn''t load models. If you''re looking for libraries that do load models, a couple exist (lib3ds, for instance). My OpenGL-like model loading library isn''t really usable yet (too few supported formats, for one), so I don''t think you''d want to use it (shameless plug ).

Share this post


Link to post
Share on other sites
Zorodius    259
quote:
Original post by Stranger
Does OpenGL have ready made functions for rotation,translation etc. like DX?

Of course, glRotate3f(theta,x,y,z) and glTranslate3f(x,y,z) being the most common.

Loading and displaying models is a complex task with an infinite number of possible solutions. If you''re looking for some code to paste in that will do it for you, I''m sure a google search will come up with something. There is not, however, a generic set of functions that comes with OpenGL specifically designed to work with models.

Share this post


Link to post
Share on other sites
Structural    328
Errr... I''ve been wondering, how do you lot rotate your objects with glRotate? I usually make three calls, one for the x, one for the y and one for the z axis:

glRotatef(x_degrees,1,0,0)
glRotatef(y_degrees,0,1,0)
glRotatef(z_degrees,0,0,1)

Is there a better way of doing this?

______________________________
"A computer is meant to be a big calculator, not a storage device"
Struct.m33p.net

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
I beleive you heard incorrectly... it was Direct 3D that lacked the math functions, while opengl has had them built in since... it was made . I beleive Direct 3D now comes with all math functions, but I do not presonally use it, so can''t say for sure.

Share this post


Link to post
Share on other sites
zedzeek    528
i personally do all the math myself + pass every vertex to opengl in worldspace.
thus the only time i call any matrix rountines is a single glLoadMatrix to locate the camera + another to setup the projection matrix.

other methods are

glPushMatrix()
glMultMatrix(mat)
draw somethibng
glPopMatrix()

or

glPushMatrix()
glTranslatef(...)
glRotatef(...)
draw somethibng
glPopMatrix()

etc

http://uk.geocities.com/sloppyturds/kea/kea.html
http://uk.geocities.com/sloppyturds/gotterdammerung.html

Share this post


Link to post
Share on other sites
Trienco    2555
quote:
Original post by zedzeek
i personally do all the math myself + pass every vertex to opengl in worldspace.


hm.. i dont know if thats what the vendors had in mind when they came up with hardware t&l. just like i somehow doubt that my own math functions could beat the d3dx functions, that are even optimized for the specific cpu.
im even abusing opengl matrix stack for my own calculations (though i would love to know if loading/reading a matrix to/from the stack frequently is such a good idea).

Share this post


Link to post
Share on other sites
zedzeek    528
>>hm.. i dont know if thats what the vendors had in mind when they came up with hardware t&l<<

true doing the calculations yourself aint the fastest method, the reason i do it is cause i want the vertices in worldspace for some certain effects.
then again the calculations are not a bottleneck on my celeron433

http://uk.geocities.com/sloppyturds/kea/kea.html
http://uk.geocities.com/sloppyturds/gotterdammerung.html

Share this post


Link to post
Share on other sites
xg0blin    752
Actually, opengl has functions for basic matrix transformations (glTranslate*, glRotate*, glScale*), but for shears and such you will have to write your own. D3DX has a very extensive math library. Has yawpitchroll matrices, quaternions, all sorts of math functions, it''s just full of stuff. Both are great api''s, but as far as pure math functions dx has more. Both can achieve the same thing though.

Share this post


Link to post
Share on other sites

  • Similar Content

    • By povilaslt2
      Hello. I'm Programmer who is in search of 2D game project who preferably uses OpenGL and C++. You can see my projects in GitHub. Project genre doesn't matter (except MMO's :D).
    • By ZeldaFan555
      Hello, My name is Matt. I am a programmer. I mostly use Java, but can use C++ and various other languages. I'm looking for someone to partner up with for random projects, preferably using OpenGL, though I'd be open to just about anything. If you're interested you can contact me on Skype or on here, thank you!
      Skype: Mangodoor408
    • By tyhender
      Hello, my name is Mark. I'm hobby programmer. 
      So recently,I thought that it's good idea to find people to create a full 3D engine. I'm looking for people experienced in scripting 3D shaders and implementing physics into engine(game)(we are going to use the React physics engine). 
      And,ye,no money =D I'm just looking for hobbyists that will be proud of their work. If engine(or game) will have financial succes,well,then maybe =D
      Sorry for late replies.
      I mostly give more information when people PM me,but this post is REALLY short,even for me =D
      So here's few more points:
      Engine will use openGL and SDL for graphics. It will use React3D physics library for physics simulation. Engine(most probably,atleast for the first part) won't have graphical fron-end,it will be a framework . I think final engine should be enough to set up an FPS in a couple of minutes. A bit about my self:
      I've been programming for 7 years total. I learned very slowly it as "secondary interesting thing" for like 3 years, but then began to script more seriously.  My primary language is C++,which we are going to use for the engine. Yes,I did 3D graphics with physics simulation before. No, my portfolio isn't very impressive. I'm working on that No,I wasn't employed officially. If anybody need to know more PM me. 
       
    • By Zaphyk
      I am developing my engine using the OpenGL 3.3 compatibility profile. It runs as expected on my NVIDIA card and on my Intel Card however when I tried it on an AMD setup it ran 3 times worse than on the other setups. Could this be a AMD driver thing or is this probably a problem with my OGL code? Could a different code standard create such bad performance?
    • By Kjell Andersson
      I'm trying to get some legacy OpenGL code to run with a shader pipeline,
      The legacy code uses glVertexPointer(), glColorPointer(), glNormalPointer() and glTexCoordPointer() to supply the vertex information.
      I know that it should be using setVertexAttribPointer() etc to clearly define the layout but that is not an option right now since the legacy code can't be modified to that extent.
      I've got a version 330 vertex shader to somewhat work:
      #version 330 uniform mat4 osg_ModelViewProjectionMatrix; uniform mat4 osg_ModelViewMatrix; layout(location = 0) in vec4 Vertex; layout(location = 2) in vec4 Normal; // Velocity layout(location = 3) in vec3 TexCoord; // TODO: is this the right layout location? out VertexData { vec4 color; vec3 velocity; float size; } VertexOut; void main(void) { vec4 p0 = Vertex; vec4 p1 = Vertex + vec4(Normal.x, Normal.y, Normal.z, 0.0f); vec3 velocity = (osg_ModelViewProjectionMatrix * p1 - osg_ModelViewProjectionMatrix * p0).xyz; VertexOut.velocity = velocity; VertexOut.size = TexCoord.y; gl_Position = osg_ModelViewMatrix * Vertex; } What works is the Vertex and Normal information that the legacy C++ OpenGL code seem to provide in layout location 0 and 2. This is fine.
      What I'm not getting to work is the TexCoord information that is supplied by a glTexCoordPointer() call in C++.
      Question:
      What layout location is the old standard pipeline using for glTexCoordPointer()? Or is this undefined?
       
      Side note: I'm trying to get an OpenSceneGraph 3.4.0 particle system to use custom vertex, geometry and fragment shaders for rendering the particles.
  • Popular Now