linetex.cpp revision 4e036287fd64d936478f7168454ed5b8816e157f
1/* 2** 3** Copyright 2006, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18#define LOG_TAG "fillrate" 19 20#include <unistd.h> 21#include <stdlib.h> 22#include <stdio.h> 23 24#include <EGL/egl.h> 25#include <GLES/gl.h> 26#include <GLES/glext.h> 27 28#include <utils/StopWatch.h> 29#include <ui/FramebufferNativeWindow.h> 30#include <ui/EGLUtils.h> 31 32using namespace android; 33 34int main(int argc, char** argv) 35{ 36 EGLint configAttribs[] = { 37 EGL_DEPTH_SIZE, 0, 38 EGL_NONE 39 }; 40 41 EGLint majorVersion; 42 EGLint minorVersion; 43 EGLContext context; 44 EGLConfig config; 45 EGLSurface surface; 46 EGLint w, h; 47 EGLDisplay dpy; 48 49 EGLNativeWindowType window = android_createDisplaySurface(); 50 51 dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); 52 eglInitialize(dpy, &majorVersion, &minorVersion); 53 54 status_t err = EGLUtils::selectConfigForNativeWindow( 55 dpy, configAttribs, window, &config); 56 if (err) { 57 fprintf(stderr, "couldn't find an EGLConfig matching the screen format\n"); 58 return 0; 59 } 60 61 surface = eglCreateWindowSurface(dpy, config, window, NULL); 62 context = eglCreateContext(dpy, config, NULL, NULL); 63 eglMakeCurrent(dpy, surface, surface, context); 64 eglQuerySurface(dpy, surface, EGL_WIDTH, &w); 65 eglQuerySurface(dpy, surface, EGL_HEIGHT, &h); 66 67 printf("w=%d, h=%d\n", w, h); 68 69 glBindTexture(GL_TEXTURE_2D, 0); 70 glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 71 glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 72 glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 73 glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 74 glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 75 glDisable(GL_DITHER); 76 glDisable(GL_BLEND); 77 glEnable(GL_TEXTURE_2D); 78 glColor4f(1,1,1,1); 79 80 const uint16_t t16[64] = { 0xFFFF, 0xF800, 0x07E0, 0x001F }; 81 82 const GLfloat vertices[4][2] = { 83 { w/2, 0 }, 84 { w/2, h } 85 }; 86 87 const GLfloat texCoords[4][2] = { 88 { 0, 0 }, 89 { 1, 1 } 90 }; 91 92 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 4, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, t16); 93 94 glViewport(0, 0, w, h); 95 glMatrixMode(GL_PROJECTION); 96 glLoadIdentity(); 97 glOrthof(0, w, 0, h, 0, 1); 98 99 glEnableClientState(GL_VERTEX_ARRAY); 100 glEnableClientState(GL_TEXTURE_COORD_ARRAY); 101 glVertexPointer(2, GL_FLOAT, 0, vertices); 102 glTexCoordPointer(2, GL_FLOAT, 0, texCoords); 103 104 glClearColor(0,0,0,0); 105 glClear(GL_COLOR_BUFFER_BIT); 106 glDrawArrays(GL_LINES, 0, 2); 107 eglSwapBuffers(dpy, surface); 108 109 usleep(5*1000000); 110 111 eglTerminate(dpy); 112 113 return 0; 114} 115