본문 바로가기

opengl

[ Android ] Opengl에서 glDrawElements함수로 그릴 떄 주의점 전 glDrawArray함수를 많이 사용하는데요. 폴라곤을 이용하여 텍스처를 입힐 때에는 glDrawElements함수를 사용하는 게 훨 편하고 속도면에서도 낫더라구요. 그런데 기존에 사용했던 glDrawArray함수와 glDrawElements함수를 사용할 때 준비해야할 점들이 다릅니다. glDrawArray함수는 vertex 좌표만 있어도 표현이 가능하죠. ( 다른 Normal등 부수적인 것을 제외 ) 하지만, glDrawElements함수에서는 vertex만큼 중요한 좌표가 두가지가 있죠. 바로!!! vertex포인터를 하게 될 좌표와 텍스처 포인터를 할 좌표!! 이 두가지를 확실하게 해주지 않으면 죽을 때까지 원하는 모양을 보실수 없으십니다. 먼저 , 텍스처 포인터를 할 때 위와 같이 두 포인터가.. 더보기
[ Android ] 프레임 속도 조절. 쓰레드를 조절할 때, postDelay를 이용해서 프레임 속도를 조절하는데요. Opengl을 사용할 경우 라이브러리 자체내에서 스레드를 돌리기 때문에 프레임 속도를 조절하기가 힘든 경우가 있었습니다. 그래서 이같은 소스가를 사용하는데요. private static long targetFrameInterval = 1000L / 30L; // 프레임 속도 30 private long frame = 30L; // 스레드 콜백 함수 (무한 반복 하는 함수) public synchronized void onDrawFrame(GL10 gl) { // 프레임 처음 시간 설정 long frameStartTime = System.currentTimeMillis(); //.. 뭔가 뿌려주기 위한 소스 등등. // 프레임 .. 더보기
[Android] 진저브레드도... Opengl은 16비트컬러 출처:http://www.androidcentral.com/some-details-about-gingerbreads-ui-changes 위 내용을 보면... 아직 Opengl이 24비트를 지원 안되어있습니다. 모토로라는 24비트를 지원해서 조금 깨끗한 화면은 연출할 수 있지만... 다른 핸드폰에서는 디더링을 해도... 점 같은 모양이 생기는 것을 막을 수는 없네요... 다음 버전에는 24비트가 지원 되었으면 좋겠네요. 더보기
[Android] Opengl 텍스쳐 변경 시!!! 제가 하루 동안 갑자기 발생한 Memory over flow 때문에... 원래 제출 해야하는 날보다 하루 미루게 되었던 대 사건의 원인을 적어볼까 합니다. - 테스트 폰 : HTC 디자이어 HD, Sky Vega X - 문제: LiveWallpaper의 설정을 여러 번 바꾼 후에, 갑자기 핸드폰이 멈춰버리는 대 사건이!-0- - 원인: 거의 5시간을 걸쳐 디버깅 하고, 구글리을 해서 알아낸 결과! heap memory가 사라지지 않고, 계속 쌓이는 것이었습니다. 처음 Bitmap의 초기화를 잘 못했나 해서 받아들인 Bitmap에 전부 초기화를 했습니다. [Bitmap 초기화 방법] gl.glGenTextures(textures.length , textures, 0); gl.glBindTexture(GL1.. 더보기
[Android] Opengl 사용 시 Antialiasing 작용 1. 아래에 두 옵션을 먼저 넣어보세요. 조금이나마 선이 부드럽게 바뀝니다. gl.glEnable(GL10.GL_LINE_SMOOTH); gl.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST); 2. 만약 위와 같은 옵션을 줬어도 변함이 없는 경우 혹시, Texture에 Bitmap을 넣을 경우 Bitmap.createScaledBitmap이 함수를 사용하셨는지 확인해보세요. Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter); src : 원본 Bitmap dstWidth : 변경할 가로 사이즈 dstHeight : 변경할 세로 사이즈 filter : Bitmap에 부드럽게 보여주기 위한 필터 매개 변수 입니다... 더보기
[Android] Opengl에 텍스쳐를 입힐 시 이미지가 안보이는 현상. 이미지가 보이지 않을 시에는 무엇보다! 벡터와 버퍼의 사이즈를 확실히 확인 한 후, gl.glEnable(GL10.GL_TEXTURE_2D);//Enable Texture Mapping 는 설정 되어 있는지! loadGLTexture(gl, this.context); 함수를 불러 들이셨는지! 이래도 보이지 않으시는 분들은, 혹시 BMP를 제외한 JPG나 PNG이미지 파일을 출력할려고 하신다면 bitmap을 리사이징 해줘야합니다. 정사각형 형태로. 64x64 , 128,128, 256x256,512x512 등.. Bitmap bitmap256 = Bitmap.createScaledBitmap(bitmap, 512, 512, true); 혹시 저같이 헤매시는 분을 위해 적어놓습니다. 죄송합니다. 꼭 저 위 .. 더보기