• 9
• 10
• 9
• 11
• 14
• Similar Content

• Good evening everyone!

I was wondering if there is something equivalent of  GL_NV_blend_equation_advanced for AMD?
Basically I'm trying to find more compatible version of it.

Thank you!

• Hello guys,

How do I know? Why does wavefront not show for me?
I already checked I have non errors yet.

And my download (mega.nz) should it is original but I tried no success...
- Add blend source and png file here I have tried tried,.....

PS: Why is our community not active? I wait very longer. Stop to lie me!
Thanks !

• I wasn't sure if this would be the right place for a topic like this so sorry if it isn't.
I'm currently working on a project for Uni using FreeGLUT to make a simple solar system simulation. I've got to the point where I've implemented all the planets and have used a Scene Graph to link them all together. The issue I'm having with now though is basically the planets and moons orbit correctly at their own orbit speeds.
I'm not really experienced with using matrices for stuff like this so It's likely why I can't figure out how exactly to get it working. This is where I'm applying the transformation matrices, as well as pushing and popping them. This is within the Render function that every planet including the sun and moons will have and run.
if (tag != "Sun") { glRotatef(orbitAngle, orbitRotation.X, orbitRotation.Y, orbitRotation.Z); } glPushMatrix(); glTranslatef(position.X, position.Y, position.Z); glRotatef(rotationAngle, rotation.X, rotation.Y, rotation.Z); glScalef(scale.X, scale.Y, scale.Z); glDrawElements(GL_TRIANGLES, mesh->indiceCount, GL_UNSIGNED_SHORT, mesh->indices); if (tag != "Sun") { glPopMatrix(); } The "If(tag != "Sun")" parts are my attempts are getting the planets to orbit correctly though it likely isn't the way I'm meant to be doing it. So I was wondering if someone would be able to help me? As I really don't have an idea on what I would do to get it working. Using the if statement is truthfully the closest I've got to it working but there are still weird effects like the planets orbiting faster then they should depending on the number of planets actually be updated/rendered.

• Hello everyone,
I have problem with texture

• Hello everyone
For @80bserver8 nice job - I have found Google search. How did you port from Javascript WebGL to C# OpenTK.?
I have been searched Google but it shows f***ing Unity 3D. I really want know how do I understand I want start with OpenTK But I want know where is porting of Javascript and C#?

Thanks!

OpenGL Normal Vector in OpenGL

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

Recommended Posts

1. I would Lkie ask sum thing about Vector Normal in OpenGl when we specify things like this glBegin(GL_QUADS) glNormal3f(0,0,1); glVertex3f(100,100,0); glVertex3f(100,100,200); glNormal3f(0,1,0); glVertex3f(50,50,0); .... sum like dat I wanna ask does OPENGL store Normal Vector like a list or OPENGL just have one current Normal Vector ? if in the Code above we dont specify the any Normal Vector ,so wat will happen when the Vertices are drawn to the Buffer and in dat case how the Normal Vector be calculates 2. Vertex Array I have code snippet like this: glEnableClientState(GL_VERTEX_ARRAY); glEnbaleClinetState(GL_NORMAL_ARRAY); my Array data is 4 3D-Points in the x-y plane for example
float MyArray[]={-50,-50,0
,50,-50,0
,50,50,0
,-50,50,0} // A GL_CCW square lie in x-y plane
here is just 2 Normal Vectors for Example

float MyVector[]={0,0,1,
,0,1,0};

glVertexPointer(3,GL_FLOAT,0,MyArray);
glNormalPointer(GL_FLOAT,0,MyVector);

So I wanna ask when OpenGL Draw My Vertex Array ,which Vector Normal in My Vector Array will be Associated with which Vertex in my vertex Array ?
or I maybe wrong in the way I specify all that thing ,coz I dun know much about this ,the book Im reading they dont get in detail

3. The last thing : What is Index Array Use for ??? In My Opinion it aint make sense . In the Book they say Index Vertex Array can share Vertices that means each Face can share vertices to each other ,and the datas dat specify the model will be smaller --> Faster performance At the first glance , It sounds resonable But I thinks the vertices OpenGl must Transforms and process are the same if we dont specify index vertex .Let me give example We specify a data array for a Cube: if we dont use index we have specify 4 points for each face of cube ,and the cube has 6 faces so we must specify total 6x4 =24 Vertices. and if we have OPENGL draw it with GL_QUADS ,it has to do 24 times tranformation if we use Vertex Array Index, the first thing we have to do is specify Vertext Array (Not index) ,and it just holds 8 Vertices But ur Index Vertex Array will hold the 24 Indexes so When we call glDrawElement(GL_QUADS,24,GL_UNSIGNED_BYTE,Indexes); for each Index OPENGL has to lookup in Vertex Array ,and then transform, and it has to transform 24 times coz we have 24 indexes so It aint make sense rite?? and we aint count the time it has to lookup for data in the Vertex Array ,if we do it must be slower than normal So what u think ? If I wrong just tell me , coz Im new to OPENGL Thanks

Share on other sites
1: The last normal issued is always associated with a vertex. OpenGL saves pretty much all states. The second vertex in your case gets the normal (0, 0, 1), since that was the last specified normal before that vertex was specified.

2: All attributes in a vertex array must be reached with the same index. That is, if you have four vertices but only two normals, you must dumplicate the normals so there are four normals aswell; exactly one normal for each vertex, no more, no less. If your vertex arrays are of different lengths, there is something wrong with them.

3: Now let's calculate the memory usage. Plain arrays is 3 (components per vertex) times 24 (number of vertices) times 4 (size of a float) is 288 bytes. Indexed arrays is 3*8*4 is 96 bytes, but add 24 (number of indices) times 4 (size of int), reaching a total of 192 bytes. So we have cut the memory usage down by ~33%.

Now think about the vertex cache also. Each vertex is shared among 3 faces, so using the index (they will all reference the same vertex), the vertex cache can skip re-transforming the vertex and just use the result from the last transform instead. Saves processing power.

Although it may not be as simple as this, it pretty much shows why they are usefull. But keep in mind that not all models gives you a ~33% memory reduction and 3 shared vertices; this scenario was very suitable for index arrays, but not all scenarios are. What's best vary from model to model.

edit: In point 3, I assume there's only the vertex position attribute present, and no normals, color, texture coordinates and such. If you add more attributes, the situation with the simple cube can very easily turn in to the worst case scenario for indexed arrays, leaving non-indexed arrays with the best choise.

Share on other sites

Let me ask :

Can we specify draw command of Vertex Array or Index Vertex Array in a display List ??

Share on other sites
Yes, but the command itself will not be compiled into the display list, but the result of innvoking them will. That is, the geometry created by calling the vertex array functions is compiled into the display list.

Share on other sites
Thanks alot, I thought it will compile the command
So if we specify this in Display list like this

static float ang=45;

glMatrixMode(GL_MODELVIEW);
glNewList(somelist,GL_COMPILE);
glRotatef(ang,0,0,1);
glutSolidSphere(30,30,30);
glEndList();

thats wat I do in void Setup() for example

now in void RenderScene();

glCallList(somelist);
ang+=1.0;

when ang=46.0 in next Rendering ,does my sphere Rotate with ang =46 ??

Sum more question plzzz :p

In the book they say OpenGl has many Color Buffer
GL_FRONT ,GL_BACK,GL_LEFT, GL_RIGHT,GL_FRONT_LEFT,GL_FRONT_RIGHT....

1.GL_RIGHT and GL_BACK_RIGHT and others same same like that ,coz it say GL_xxx_RIGHT or GL_BACK_xxx ,are they relative to each other ?? or they are unique color buffers ?

2.I wrote an testing example ,and I caught some new problems ,I couldnt know how to explain for myself
My testing example is simple I draw a green square on the screen :

#include <gl/glut.h>void Render(){	glClear(GL_COLOR_BUFFER_BIT);	glColor3f(0.0,1.0,0.0);	glRectf(-10.0,10.0,10.0,-10.0);	glutSwapBuffers();}void Change(GLsizei w,GLsizei h){	if(h==0)	h=1;	GLfloat k=float(w)/float(h);	glViewport(0,0,w,h);	glMatrixMode(GL_PROJECTION);	glLoadIdentity();	if(w<=h)		glOrtho(-100.0*k,100.0*k,-100.0,100.0,1.0,-1.0);	else		glOrtho(-100.0,100.0,-100.0/k,100.0/k,1.0,-1.0);	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}void main(){	glutInitDisplayMode(GLUT_RGBA|GL_DOUBLE);	glutCreateWindow("  Redeeculous :(  ");	glutReshapeFunc(Change);	glutDisplayFunc(Render);	glClearColor(0.0,0.0,0.0,0.0);        glDrawBuffer(GL_LEFT);	glutMainLoop();}

I specify the command glDrawBuffer(GL_LEFT);
I wanna render it in GL_LEFT Color Buffer ,I didnt render it to GL_BACK
color buffer .why can I still see the green square ??, I thought It must be Black screen

3. How to know that how many GL_AUX color buffer we have ?? ,The book doesnt tell me

--------------
THanks for interested in :p