Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <EGL/egl.h>
- #include <GLES/gl.h>
- #include <GLES/glext.h>
- int main(int argc, char** argv)
- {
- EGLint s_configAttribs[] = {
- EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,//|EGL_WINDOW_BIT,
- EGL_RED_SIZE, 5,
- EGL_GREEN_SIZE, 6,
- EGL_BLUE_SIZE, 5,
- EGL_NONE
- };
- EGLint numConfigs = -1;
- EGLint majorVersion;
- EGLint minorVersion;
- EGLConfig config;
- EGLContext context;
- EGLSurface surface;
- EGLint w = 2, h = 2;
- int texSize = w;
- char* data = (char*)malloc(4*texSize*texSize*sizeof(char));
- char* result = (char*)malloc(4*texSize*texSize*sizeof(char));
- for (int i=0; i<texSize*texSize*4; i++)
- data[i] = i*10;
- EGLDisplay dpy;
- dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
- eglInitialize(dpy, &majorVersion, &minorVersion);
- printf("creating pbuffer\n");
- eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs);
- EGLint attribs[] = { EGL_WIDTH, w, EGL_HEIGHT, h, EGL_NONE };
- surface = eglCreatePbufferSurface(dpy, config, attribs);
- if (surface == EGL_NO_SURFACE) {
- printf("eglCreatePbufferSurface error %x\n", eglGetError());
- }
- // printf("FBO 0x%02X\n", glCheckFramebufferStatus(GL_FRAMEBUFFER));
- context = eglCreateContext(dpy, config, NULL, NULL);
- eglMakeCurrent(dpy, surface, surface, context);
- eglQuerySurface(dpy, surface, EGL_WIDTH, &w);
- eglQuerySurface(dpy, surface, EGL_HEIGHT, &h);
- printf("Surface %dx%d\n", w, h);
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrthof(0, w, 0, h, 0, 1); // FIXME: What's that?!?
- //~ glClearColor(0,0,0,0);
- //~ glClear(GL_COLOR_BUFFER_BIT);
- // GLint crop[4] = { 0, 4, 4, -4 };
- glBindTexture(GL_TEXTURE_2D, 0);
- // glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, crop);
- glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- // glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- // glEnable(GL_TEXTURE_2D);
- // glColor4f(1,1,1,1);
- printf("%d: 0x%02X\n", __LINE__, glGetError());
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
- texSize, texSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
- printf("%d: 0x%02X\n", __LINE__, glGetError());
- //glPixelStorei(GL_PACK_ALIGNMENT, 1);
- glReadPixels(0, 0, texSize, texSize, GL_RGBA,
- GL_UNSIGNED_BYTE, result);
- printf("%d: 0x%02X\n", __LINE__, glGetError());
- for (int i=0; i<texSize*texSize*4; i++)
- printf("%d\n",data[i]);
- printf("Data after roundtrip:\n");
- for (int i=0; i<texSize*texSize*4; i++)
- printf("%d\n",result[i]);
- eglTerminate(dpy);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement