BigEfromTheVillages

Member
  • Content count

    8
  • Joined

  • Last visited

Community Reputation

108 Neutral

About BigEfromTheVillages

  • Rank
    Newbie
  1. How to tell if a 3D point will be hidden

    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.
  2. How to tell if a 3D point will be hidden

    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 ") 
  3. How to tell if a 3D point will be hidden

    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?
  4. How to tell if a 3D point will be hidden

    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?
  5. How to tell if a 3D point will be hidden

    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?
  6. I want to number vertices of a model only if that vertex will be visible once the complete model is rendered. I need to turn off the depth buffer to insure that the number text will not be obscured by adjacent objects, so i need to know in advance if the position of the vertex is hidden.    My plan is to render the model, then go back over each vertex (could be thousands) to see if it is visible, if so, turn off the depth buffer and label the vertex using outlined fonts.   Any suggestions on how to accomplish this??   Thanks in advance  
  7. Texture Objects - can't reuse

    Two things were wrong, i called glBindTexture() after glTexImage1D, and i was creating the texture before the rendering context was created. Thanks for your help.
  8. Texture Objects - can't reuse

    I have a routine to apply contours to the surface of quads. Iam using a 1d texture.   I create the texture using: glPixelStorei(GL_UNPACK_ALIGNMENT,1); glDeleteTextures(1,&contourTextureName); glGenTextures(1, &contourTextureName); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, CONTOUR_TEXTURE_LENGTH, 0, GL_RGBA, GL_UNSIGNED_BYTE, contourTexture); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBindTexture(GL_TEXTURE_1D,contourTextureName); then when rendering the quads i do the following: glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glBindTexture(GL_TEXTURE_1D,contourTextureName); glEnable(GL_TEXTURE_1D); glBegin(GL_POLYGON); glTexCoord1f(value[0]); glVertex3f(NX(n1),NY(n1),NZ(n1)); glTexCoord1f(value[1]); glVertex3f(NX(n2),NY(n2),NZ(n2)); glTexCoord1f(value[2]); glVertex3f(NX(n3),NY(n3),NZ(n3)); if(n4 > 0) glTexCoord1f(value[3]); glVertex3f(NX(n4),NY(n4),NZ(n4)); glEnd(); The texture ends up not being used. However, if i do the following (add the texture creation code each time i need to use it) glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, CONTOUR_TEXTURE_LENGTH, 0, GL_RGBA, GL_UNSIGNED_BYTE, contourTexture); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glBindTexture(GL_TEXTURE_1D,contourTextureName); glEnable(GL_TEXTURE_1D); glBegin(GL_POLYGON); glTexCoord1f(value[0]); glVertex3f(NX(n1),NY(n1),NZ(n1)); glTexCoord1f(value[1]); glVertex3f(NX(n2),NY(n2),NZ(n2)); glTexCoord1f(value[2]); glVertex3f(NX(n3),NY(n3),NZ(n3)); if(n4 > 0) glTexCoord1f(value[3]); glVertex3f(NX(n4),NY(n4),NZ(n4)); glEnd(); It works fine. This is eating up all sorts of cpu, and i thought i should be able to re-use the texture, what am i doing wrong???