OpenGL ARB Superbuffers
description
Transcript of OpenGL ARB Superbuffers
![Page 2: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/2.jpg)
2
ARB Superbuffers Workgroup• Active workgroup• None of this is final• Über Buffers proposal• Image Buffers proposal• Proposals are converging
![Page 3: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/3.jpg)
3
What Changes?• Dynamic Framebuffers• Plug and Play• Mix and Match
![Page 4: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/4.jpg)
4
Derived Functionality• Render to Texture• Render to Vertex Array• Temporary Buffers• Many new algorithms made
possible
![Page 5: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/5.jpg)
5
Memory Objects• Structured Memory• Bindable as the memory of
– Textures– Framebuffers– Buffer Objects (vertex arrays)
![Page 6: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/6.jpg)
6
Creating Memory ObjectsGLmem glAllocMem1D(GLenum format, GLsizei width,
GLsizei n, const GLenum *properties,
const GLint *values)
GLmem glAllocMem2D(GLenum format, GLsizei width,
GLsizei height,
GLsizei n, const GLenum *properties,
const GLint *values)
GLmem glAllocMem3D(GLenum format, GLsizei width,
GLsizei height, GLsizei depth,
GLsizei n, const GLenum *properties,
const GLint *values)
![Page 7: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/7.jpg)
7
Memory Object Capability Properties• GL_COLOR_BUFFER• GL_DEPTH_BUFFER• GL_STENCIL_BUFFER• GL_TEXTURE_1D• GL_TEXTURE_2D• GL_TEXTURE_3D• GL_TEXTURE_CUBE_MAP• GL_BUFFER_OBJECT
![Page 8: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/8.jpg)
8
Memory Object More Properties• GL_MIPMAP• GL_SAMPLES• GL_USAGE
![Page 9: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/9.jpg)
9
Binding Memory ObjectsGLboolean glBindMem(GLenum target,
GLmem mem,
GLenum preserve)
![Page 10: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/10.jpg)
10
Render to TextureGLenum properties[2] = {GL_TEXTURE_2D, GL_COLOR_BUFFER};GLint values[2] = {GL_TRUE, GL_TRUE};GLmem mem;
mem = glAllocMem2D(GL_RGBA8, 256, 256, 2, properties, values);
glBindMem(GL_AUX0, mem, GL_FALSE);glDrawBuffer(GL_AUX0);
draw stuff
glBindMem(GL_AUX0, 0, GL_FALSE);
glBindTexture(GL_TEXTURE_2D, tex);glBindMem(GL_TEXTURE_2D, mem, GL_TRUE);
![Page 11: OpenGL ARB Superbuffers](https://reader036.fdocuments.us/reader036/viewer/2022082819/56813e14550346895da7f60b/html5/thumbnails/11.jpg)
11
Render to Vertex ArrayGLenum properties[2] = {GL_COLOR_BUFFER, GL_BUFFER_OBJECT};
GLint values[2] = {GL_TRUE, GL_TRUE};
GLmem mem;
mem = glAllocMem2D(GL_RGBA_FLOAT32, 64, 64, 2, properties, values);
glBindMem(GL_AUX0, vertex_mem, GL_FALSE);
load special shaders and draw stuff
glBindMem(GL_AUX0, 0, GL_FALSE);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 1);
glBindMem(GL_ARRAY_BUFFER_ARB, vertex_mem, GL_TRUE);
glVertexPointer(4, GL_FLOAT, 0, 0);
draw using the array