occlusion_query.py :  » Game-2D-3D » PyOpenGL » PyOpenGL-3.0.1 » OpenGL » GL » NV » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Game 2D 3D » PyOpenGL 
PyOpenGL » PyOpenGL 3.0.1 » OpenGL » GL » NV » occlusion_query.py
'''OpenGL extension NV.occlusion_query

This module customises the behaviour of the 
OpenGL.raw.GL.NV.occlusion_query to provide a more 
Python-friendly API

Overview (from thespec import 
  
  The HP_occlusion_test extension defines a mechanism whereby an
  application can query the visibility of an object, where "visible"
  means that at least one pixel passes the depth and stencil tests.
  
  The HP extension has two major shortcomings.
  
  - It returns the result as a simple GL_TRUE/GL_FALSE result, when in
    fact it is often useful to know exactly how many pixels passed.
  - It provides only a simple "stop-and-wait" model for using multiple
    queries.  The application begins an occlusion test and ends it;
    then, at some later point, it asks for the result, at which point
    the driver must stop and wait until the result from theprevious import 
    test is back before the application can even begin the next one.
    This is a very simple model, but its performance is mediocre when
    an application wishes to perform many queries, and it eliminates
    most of the opportunites for parallelism between the CPU and GPU.
  
  This extension solves both of those problems.  It returns as its
  result the number of pixels that pass, and it provides an interface
  conceptually similar to that of NV_fence that allows applications to
  issue many occlusion queries before asking for the result of any one.
  As a result, they can overlap the time it takes for the occlusion
  query results to be returned with other, more useful work, such as
  rendering other parts of the scene or performing other computations
  on the CPU.
  
  There are many situations where a pixel count, rather than a boolean
  result, is useful.
  
  - If the visibility test is an object bounding box being used to
    decide whether to skip the object, sometimes it can be acceptable,
    and beneficial to performance, to skip an object if less than some
    threshold number of pixels could be visible.
  - Knowing the number of pixels visible in the bounding box may also
    help decide what level of detail a model should be drawn with.  If
    only a few pixels are visible, a low-detail model may be
    acceptable.  In general, this allows level-of-detail mechanisms to
    be slightly less ad hoc.
  - "Depth peeling" techniques, such as order-independent transparency,
    would typically like to know when to stop rendering more layers; it
    is difficult to come up with a way to determine a priori how many
    layers to use.  A boolean count allows applications to stop when
    more layers will not affect the image at all, but this will likely
    be unacceptable for performance, with minimal gains to image
    quality.  Instead, it makes more sense to stop rendering when the
    number of pixels goes below a threshold; this should provide better
    results than any of these other algorithms.
  - Occlusion queries can be used as a replacement for glReadPixels of
    the depth buffer to determine whether, say, a light source is
    visible for the purposes of a lens flare effect or a halo to
    simulate glare.  Pixel counts allow you to compute the percentage
    of the light source that is visible, and the brightness of these
    effects can be modulated accordingly.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/NV/occlusion_query.txt
'''
from OpenGL import platform,constants,constant,arrays
from OpenGL import extensions,wrapper
from OpenGL.GL import glget
import ctypes
from OpenGL.raw.GL.NV.occlusion_query import *
### END AUTOGENERATED SECTION
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.