// INITIALIZATION
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
// Load Test Texture
glGenTextures(1, &textureTest);
glBindTexture(GL_TEXTURE_2D, textureTest); // Bind Our Texture
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Linear Filtered
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Filtered
[self loadTexture: @"texture"]; // calls glTexImage2D with image data from png
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0,0, 320.0f,480.0f);
glOrthof(0,320.0f, 480.0f,0, -1.0f, 1.0f); // left, right, bottom, top
glMatrixMode(GL_MODELVIEW);
//FBO Setup
glGenTextures(1, &textureFBO); // texture handle
glBindTexture(GL_TEXTURE_2D, textureFBO); //bind it.
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Linear Filtered
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Filtered
glGenFramebuffersOES(1, &FBO); // frame buffer
glBindFramebufferOES(GL_FRAMEBUFFER_OES, FBO); //bind the frame buffer
// attach texture to framebuffer color buffer
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, textureFBO, 0);
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) printf("CANNOT CREATE FRAMEBUFFER\n");
// MAIN DRAWING LOOP
static const Vertex3D vertices[] = {
{0.0, 100.0, 0.0},
{ 100.0, 100.0, 0.0},
{ 0.0, 200.0, 0.0},
{ 100.0, 200.0, 0.0}
};
static const GLfloat texCoords[] = {
0.0, 1.0,
1.0, 1.0,
0.0, 0.0,
1.0, 0.0
};
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
// Render to texture
glBindFramebufferOES(GL_FRAMEBUFFER_OES, FBO);
// Draw test texture
glBindTexture(GL_TEXTURE_2D, textureTest);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glBindTexture(GL_TEXTURE_2D, 0); //disable any bound textures.
// End draw test texture
// Render to screen
glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
// Draw FBO texture
glBindTexture(GL_TEXTURE_2D, textureFBO);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glBindTexture(GL_TEXTURE_2D, 0); //disable any bound textures.
// End draw FBO texture
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:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
by: ikeworkPosted on 2009-10-30 at 10:23:09ID: 25705079
Hi collages,
mentation/ specs/man_ pages/hard copy/ GL/ht ml/gl/draw pixels.htm l
gdon/openg l/glDrawPi xels.html
If you just want to draw a bitmap(texture) on the screen, you can do that with glDrawPixels without using any extensions:
Man Page:
http://www.opengl.org/docu
Example:
http://www.cs.mun.ca/~blan
ike