[cairo-commit] papers/opengl_freenix04 flow.png,NONE,1.1 Makefile,1.5,1.6 opengl_freenix04.tex,1.23,1.24
Peter Nilsson
commit at pdx.freedesktop.org
Mon Aug 15 11:12:59 PDT 2005
Committed by: peter
Update of /cvs/cairo/papers/opengl_freenix04
In directory pdx:/tmp/cvs-serv7649
Modified Files:
Makefile opengl_freenix04.tex
Added Files:
flow.png
Log Message:
OpenGL summary in intro + Section about Exposing the OpenGL API
--- NEW FILE: flow.png ---
(This appears to be a binary file; contents omitted.)
Index: Makefile
===================================================================
RCS file: /cvs/cairo/papers/opengl_freenix04/Makefile,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** a/Makefile 22 Feb 2004 15:48:43 -0000 1.5
--- b/Makefile 23 Feb 2004 13:49:09 -0000 1.6
***************
*** 7,11 ****
layers.eps \
sinus.eps \
! jaggies.eps
all: ${MASTER}.ps ${MASTER}.ps.gz ${MASTER}.pdf
--- 7,12 ----
layers.eps \
sinus.eps \
! jaggies.eps \
! flow.eps
all: ${MASTER}.ps ${MASTER}.ps.gz ${MASTER}.pdf
Index: opengl_freenix04.tex
===================================================================
RCS file: /cvs/cairo/papers/opengl_freenix04/opengl_freenix04.tex,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** a/opengl_freenix04.tex 23 Feb 2004 11:55:24 -0000 1.23
--- b/opengl_freenix04.tex 23 Feb 2004 13:49:09 -0000 1.24
***************
*** 1,3 ****
! \documentclass[finalversion]{usetex-v1}
\usepackage{url}
--- 1,3 ----
! \documentclass[workingdraft]{usetex-v1}
\usepackage{url}
***************
*** 13,17 ****
\title{\libname{}: Hardware Accelerated Image Compositing using OpenGL}
! \docstatus{Preparing for submission to USENIX Conference 2004}
\author{
--- 13,17 ----
\title{\libname{}: Hardware Accelerated Image Compositing using OpenGL}
! \docstatus{Preparing for presentation at USENIX Conference 2004}
\author{
***************
*** 84,88 ****
in that context.
! \subsection{Traditional Graphics Rendering in X}
X wasn't originally designed for the advanced graphics
--- 84,88 ----
in that context.
! \subsection{Traditional X Graphics}
X wasn't originally designed for the advanced graphics
***************
*** 129,137 ****
and more consistent hardware acceleration of the rendering process.
Still the question remains about how to actually render all the graphics
with hardware support. OpenGL~\cite{gl:1.2.1} is the most widely used and
! supported graphics API available today, it has great support for hardware
! acceleration and is very portable. For these reasons the choice has been
! made to use OpenGL to realize the rendering in the library.
The Render model provides only low level fundamental graphics
--- 129,155 ----
and more consistent hardware acceleration of the rendering process.
+
Still the question remains about how to actually render all the graphics
with hardware support. OpenGL~\cite{gl:1.2.1} is the most widely used and
! supported graphics API available today, it is widely supported in hardware
! and is very portable. OpenGL operates on image data as well as geometric
! primitives and offers the necessary operations needed for the creation of
! \libname{}.For these reasons the choice has been made to use OpenGL to
! realize the rendering in the library.
!
! \begin{figure}[htbp]
! \begin{centering}
! \epsfig{file=flow.eps}
! \small\itshape
! \caption{\small\itshape The OpenGL Visualization Programming Pipeline}
! \label{layers}
! \end{centering}
! \end{figure}
!
! In addition to OpenGL's fixed rendering pipeline there are methods for
! adding new functionallity to the API if needed. An example of this is
! fragment programs, which are a way to write new fragment manipulating
! operations in an assembler-like fashion. Fragment programs are frequently
! used in the implementation of \libname{}, more details in later sections.
The Render model provides only low level fundamental graphics
***************
*** 382,386 ****
\subsubsection{Anti-aliasing}
!
Aliasing is a general term used to describe the problems that may
occur whenever an analog signal is point sampled to convert it into
--- 400,404 ----
\subsubsection{Anti-aliasing}
!
Aliasing is a general term used to describe the problems that may
occur whenever an analog signal is point sampled to convert it into
***************
*** 510,513 ****
--- 528,532 ----
surfaces when rendering indirect polygons.
+
\subsection{Text Rendering}
***************
*** 613,616 ****
--- 632,666 ----
probably implement it soon.}
+ \subsection{Exposing the OpenGL API}
+
+ \libname{} provides three functions that allows for the application to
+ use the complete OpenGL API for rendering on some \libname{} surface.
+ These functions are:
+
+ \begin {itemize}
+ \item glc\_surface\_gl\_begin
+ \item glc\_surface\_gl\_end
+ \item glc\_surface\_get\_gl\_texture
+ \end {itemize}
+
+ The first two functions together make out a block in the \libname{}
+ application in which ordinary OpenGL calls can be safely executed.
+ No \libname{} calls are allowed within this block.
+ The last function returns the texture for a corresponding surface, which
+ is handy if you want to execute some OpenGL command on that surface.
+ You need the texture to operate on.
+
+ Allowing for the applications to perform ordinary OpenGL calls in this
+ way enables \libname to also act as an easy to use toolkit on top of
+ OpenGL. The initialization process then becomes much simplified and it takes
+ only a few lines of code to set up a powerful OpenGL drawing environment
+ for on- and offscreeen rendering.
+
+ An example of usage is application that implements a visual effect
+ like a 3D transformation on a 2D surface created with \libname{}.
+ Something like the well known cube effect in Mac OS X's user switching
+ procedure could easily be implemented with a \libname{} application in this
+ fashion.
+
\subsection{Still Under Construction}
More information about the cairo-commit
mailing list