Jump to content

  • Log In with Google      Sign In   
  • Create Account

BigEfromTheVillages

Member Since 22 Nov 2013
Offline Last Active Dec 28 2013 05:35 AM

Posts I've Made

In Topic: How to tell if a 3D point will be hidden

27 December 2013 - 06:54 AM

Thank yo to everyone for their help. As you can tell, this is not my area of expertise. I have OpenGL version 4.4, so i should have what i need, I don't keep up on opengl as much as i should, so i am sure i have some extraneous files included, so any advice would be appreciated. I am running on a 64 bit machine, and this is a 64 bit application.

 

Right now the include files i am using are:

 

#include <gl/glew.h>
#include <gl/gl.h>
#include <gl/glu.h>
#define GL_GLEXT_PROTOTYPES
#include <gl/glext.h>
 

And i am using the following libraries: (i'm sure i have more referenced than i need)

 

binlib.lib
libifcoremd.lib
libifportmd.lib
opengl32.lib
glu32.lib
htmlhelp.lib
winmm.lib
iphlpapi.lib
ws2_32.lib
glut32.lib
odbc32.lib
odbccp32.lib
glew32.lib
glew32s.lib
 
I get no unsatisfied externals and everything compiles fine,
However, when i try to call glGenQuieries
GLuint nodeQuiery[8],elemQuery[6]; 
void COpenGL::SetUpOcclusion()
{
    glGenQueries(8, nodeQuiery);
    glGenQueries(6, elemQuery);
}
 i get:
First-chance exception at 0x00000000 in ePost.exe: 0xC0000005: Access violation at location 0x0000000000000000.
 
I apparently am missing something, but i don't know what.

In Topic: How to tell if a 3D point will be hidden

24 December 2013 - 10:25 AM

So i want to try the occlusion method. My program uses OpenGL without the glut routines. So i added the headers and libraries from the game_dev example to my program. But when i try to generate the queries with a call to:  glGenQueriesARB() I get -

 

First-chance exception at 0x00000000 in ePost.exe: 0xC0000005: Access violation at location 0x0000000000000000.

 

Maybe i am not initiating the glut libraries and routines correctly.

The game-dev sample is below. The question is, which of these do i need to call before beginning the queries? Right now i am not calling any of them.

	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGB );
        glutInitWindowSize(512, 512);
	glutCreateWindow("ARB_occlusion_query example");

	glut_helpers_initialize();

	glutDisplayFunc(display);
	glutMainLoop();
        glh_init_extensions("GL_ARB_occlusion_query ") 

In Topic: How to tell if a 3D point will be hidden

23 December 2013 - 08:10 AM

I tried using the occlusions, but i seem to be missing something. I started with the " simple occlusion query demo" from gamedev. I draw a crude sphere with 20 vertices, then do a query.

#define NUM_VERT 20
GLuint oq_sphere,oq_verts[NUM_VERT];

    glGenQueriesARB(NUM_VERT, oq_verts);

... drawing the sphere
	glBegin(GL_TRIANGLES);
	for (i = 0; i < 20; i++) {    
	   glBeginQueryARB(GL_SAMPLES_PASSED_ARB, oq_verts[i]);
	   glVertex3fv(&vdata[tindices[i][0]][0]); 
	   glVertex3fv(&vdata[tindices[i][1]][0]); 
	   glVertex3fv(&vdata[tindices[i][2]][0]); 
	   glEndQueryARB(GL_SAMPLES_PASSED_ARB);
	}
	glEnd();


... then getting results after second rendering of sphere
    GLuint vert_samples[NUM_VERT];
	for(int i=0; i<NUM_VERT; i++)
	{
	do {   
        glGetQueryObjectivARB(oq_verts[i], GL_QUERY_RESULT_AVAILABLE_ARB, &available);
        } while (!available);
	glGetQueryObjectuivARB(oq_verts[i], GL_QUERY_RESULT_ARB, &vert_samples[i]);
	}

The problem is, all queries come back with the number 4294967295. What gives?


In Topic: How to tell if a 3D point will be hidden

23 December 2013 - 06:38 AM

So if i understand this correctly, i should render the scene to a 32 bit texture of the same resolution as the screen. Then query the texture to see if a vertex passes. I assume the "identificator" would be the color i set for each vertex. What would be the best way to query a texture?


In Topic: How to tell if a 3D point will be hidden

22 December 2013 - 10:27 AM

Thanks for your reply

 

The stencil buffer sounds like a plan if i understand it correctly. I could render each polygon with a different reference number, then when i want to check for numbering of that polygon, i would query the stencil buffer ( i assume using some kind of glRasterPos routine) at the position i want to place the number. If the reference number matches the reference number for that polygon, then that location is visible.

 

Is that correct?


PARTNERS