File: glFeedbackBuffer.m

package info (click to toggle)
psychtoolbox-3 3.0.19.14.dfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,796 kB
  • sloc: ansic: 176,245; cpp: 20,103; objc: 5,393; sh: 2,753; python: 1,397; php: 384; makefile: 193; java: 113
file content (61 lines) | stat: -rw-r--r-- 2,193 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function glFeedbackBuffer(  bufsize, buftype, bufferptr )
% glFeedbackBuffer  Interface to OpenGL function glFeedbackBuffer
%
% usage:  glFeedbackBuffer( bufsize, buftype, bufferptr )
%
% bufsize is the number of float values that can be written into the buffer.
% Caution: A float takes up 4 bytes, so the size of the allocated buffer needs
% to be at least 4*bufsize!
%
% buftype is a GLenum specifiying the type of requested information. See OpenGL manual.
%
% bufferptr is a pointer to a buffer allocated via bufferptr=moglmalloc() or bufferptr=moglcalloc().
%
% Example of usage:
%
% 1. Allocate a buffer of proper size to hold the information you want OpenGL to return:
%    bufferptr = moglmalloc(bufsize * 4);
%
% 2. Set this memory buffer as feedback buffer and tell GL which kind of info about each
%    primitive should be fed back. E.g., GL.2D would return projected 2D screen coordinates of
%    each transformed vertex.
%    glFeedbackBuffer(bufsize, GL.2D, bufferptr);
%
% 3. Switch OpenGL from normal rasterization (=drawing) mode into feedback mode. Executing
%    drawing commands will not create any visible drawing, but will only store the results
%    of geometric transform, culling and lighting operations into your buffer 'bufferptr':
%    glRenderMode(GL.FEEDBACK);
%
% 4. Draw your scene...
%
% 5. Switch back to normal rendering. This will return the number of actually fed back items:
%    itemcount = glRenderMode(GL.RENDER);
%
% 6. Return the content of the memory feedback buffer as a new Matlab matrix:
%    myfeedbackresult = moglgetbuffer(bufferptr, GL.FLOAT, itemcount*4);
%
% 7. Interpret and use content of myfeedbackresult as described in the manual for glFeedbackBuffer.

%   
% C function:  void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat* buffer)

% 16-May-2006 -- created by MK.

% ---allocate---
% ---protected---

if nargin < 1 || isempty(bufsize) || bufsize <1
error('Missing or invalid bufsize argument.');
end;

if nargin < 2 || isempty(buftype)
error('Missing buftype argument.');
end;

if nargin < 3 || isempty(bufferptr)
error('Missing bufferptr argument.');
end;

moglcore( 'glFeedbackBuffer', bufsize, buftype, bufferptr );

return