OpenGL에서 현재 texture를 눈으로 확인하며 디버깅하고 싶을 때 texture를 bmp파일로 저장하여 디버깅 할때 아래와 같이 한다. 이때 중요한 함수가 glGetTexLevelParameteriv인데 이것은 현재 texture 현재 mipmap level예제에서는 level가 1개 이므로 0이다.)의 parameter를 얻는 함수이다. 저장할 때는 32비트 bmp로 저장한다. glGetTexImage는 현재 texture의 pixel을 얻어온다. 이때 32비트 bmp는 GL_BGRA이므로 format을 GL_RGBA로 하면 색깔이 뒤집힌다. #define GL_BGRA 0x80E1 // Use this for 32bit bmp GLint cx, cy, format, bpp; // 저장할 tex..
OpenGL에서 bmp파일을 로딩하여 texture를 생성하는 코드이다. bmp는 24/32비트만을 지원한다. 15,16비트와 256칼라는 지원하지 않는다. glTexImage2D로 생성하기 때문에 다음과 같이 필터가 셋팅되어 있어야 한다. #define GL_BGRA 0x80E1 // Use this for 32bit bmp #define GL_BGR_EXT 0x80E0 void LoadBmp() { glBindTexture(GL_TEXTURE_2D, tex); FILE *fp = fopen("c:\\cap2.bmp", "rb"); if (!fp) return; BITMAPFILEHEADER bfh; BITMAPINFOHEADER bih; fread(&bfh, 1, sizeof(BITMAPFILEHEA..
안드로이드에서 OpenGL ES를 사용하려면 가장 간단하게 GLSurfaceView를 사용하면 된다.GLSurfaceView를 생성하고 GLSurfaceView.Renderer를 구현하면 기본적인 뼈대가 완성 된다.아래의 예제는 화면을 빨간색으로 지우는 단순한 예제이다. package com.duongame.opengl; import android.opengl.GLSurfaceView;import android.support.v7.app.AppCompatActivity;import android.os.Bundle; public class MainActivity extends AppCompatActivity { GLSurfaceView glSurfaceView; @Override protected void..
NVIDIA와 INTEL 그래픽카드는 데스크탑에서 EGL을 사용할수 없다. 그러므로 OPENGL ES를 사용할수 없다.AMD는 EGL을 통해서 데스크탑 OPENGL ES를 구현하고 있다. Using OpenGL ES on desktops differs from IHV to IHV. While NVIDIA and Intel expose OpenGL ES on desktop via WGL/GLX extensions (e.g. http://opengl.delphigl.de/gl_listreports.php?listreportsbyextension=WGL_EXT_create_context_es_profile), AMD exposes it through EGL.
#include #include #include GLubyte rasters[24] = { 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0xc0, 0xff, 0xc0}; void init(void){ glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glClearColor (0.0, 0.0, 0.0, 0.0);} void display(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); //drawing F 3 times glRasterPos2..
OpenGL 2.0은 fixed function pipeline이 없으므로 무조건 GLSL을 사용해야 된다는 것은 익히 알려진 사실이다. 그러면 fixed function pipeline에서 사용하던 어떤 함수들을 사용할수 없을까? 1.0에서 2.0으로 전환하려면 단순하게 GLSurfaceView에서 다음과 같은 문장을 추가하게 되면 2.0을 사용하게 되는 환경으로 전환하게 된다. setEGLContextClientVersion(2); 그런데 1.0으로 작성한 코드중에 대부분은 다음과 같은 에러가 발생하게 된다. E/libEGL(7744): called unimplemented OpenGL ES API 이런 에러메세지들의 대부분은 vertex array에서 발생한다. glEnableClientState,..
- Total
- Today
- Yesterday