안드로이드 네이티브 관련 질문드립닌다.

lalupo20의 이미지

온리 C++로 겜앱 하나 만들어보려고 하는데

예전에 오픈지엘 라이브러리 만들어둔게 있거든요.

이 라이브러리 소스,, 윈도우에서도 써봤고, 안드로이드 자바로도 만들어서 써봤는데

잘 돌아갔던건데

이거 다시 써보는데 작동을 안하더라구요.

안 그려지는건지 시점때문에 안보이는건지는 잘 모르겠는데

안드로이드 오픈지엘 관련 부분 내부 소스가 변경된건가요?

근데 변경이 되더라도, 기존 어플들 잘 돌아가려면 호환이 되게 바뀌지 않았을까요?

왜 안돌아가는 것일까요...

관련 정보 아시는 분 계시면 답글 좀 부탁드립니다 ㅠㅠ;

의심되는 부분은


glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
 
glEnable(GL_DEPTH_TEST);
 
glDepthFunc(GL_LEQUAL);
 
glDepthMask(GL_TRUE);

이부분이랑


glViewport(0, 0, width, height);
 
glMatrixMode(GL_PROJECTION);
 
glLoadIdentity();
 
GLfloat ratio = (GLfloat)((GLfloat)width * 1.0f) / ((GLfloat)height * 1.0f);
 
glFrustumf(-ratio, ratio, -1.0f, 1.0f, 1.5f, 1000.0f);
 
​
 
glMatrixMode(GL_MODELVIEW);
 
glLoadIdentity();
 
​
 
gluLookAt(0, 0, 200, //eyeXYZ
 
0.0f, 0.0f, 0.0f, //centerXYZ
 
0.0f, 1.0f, 0.0f);

이부분에 문제가 있는것 같은데

좀 봐주실 수 있을까요?


void GLObject::draw() {
	glPushMatrix();
 
	if (_isVisible) {
		if (transparent()) {
			glEnable(GL_BLEND);
			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
		}
		glEnable(GL_CULL_FACE);
		if (mode == GL_TEXTURE_MODE) {
			glEnable(GL_TEXTURE_2D);
		}
		if (gradation()) {
			glShadeModel(GL_SMOOTH);
		}
		else {
			glShadeModel(GL_FLAT);
		}
 
		glEnableClientState(GL_VERTEX_ARRAY);
		if (pickMode) glColor4f(colors[0], colors[1], colors[2], colors[3]);
 
		if (vertex != NULL) glVertexPointer(3, GL_FLOAT, 0, vertex);
 
		glEnableClientState(GL_NORMAL_ARRAY);
		if (normal != NULL) glNormalPointer(GL_FLOAT, 0, normal);
 
 
		switch (mode) {
		case GLObject::GL_COLOR_MODE:
			if (!pickMode) {
				if (colors != NULL) {
					glEnableClientState(GL_COLOR_ARRAY);
					glColorPointer(4, GL_FLOAT, 0, colors);
				}
			}
			break;
		case GLObject::GL_TEXTURE_MODE:
			glEnableClientState(GL_COLOR_ARRAY);
			if (!pickMode) {
				glEnableClientState(GL_COLOR_ARRAY);
				if (colors != NULL) glColorPointer(4, GL_FLOAT, 0, colors);
			}
 
			glBindTexture(GL_TEXTURE_2D, texture[0]);
			glEnableClientState(GL_TEXTURE_COORD_ARRAY);
			if (texCoord != NULL) glTexCoordPointer(2, GL_FLOAT, 0, texCoord);
			break;
		}
 
		motion();
 
 
		if (indices != NULL) glDrawElements(GL_TRIANGLE_STRIP, indiceLength, GL_UNSIGNED_SHORT, indices);
		glDisableClientState(GL_COLOR_ARRAY);
		glDisableClientState(GL_TEXTURE_COORD_ARRAY);
		glDisableClientState(GL_VERTEX_ARRAY);
		glDisableClientState(GL_NORMAL_ARRAY);
		if (transparent()) {
			glDisable(GL_BLEND);
		}
		//	
		if (mode == GL_TEXTURE_MODE) {
			glDisable(GL_TEXTURE_2D);
		}
		glDisable(GL_CULL_FACE);
	}
 
	glPopMatrix();
}

함수 하나 추가 합니다.

lalupo20의 이미지

이 부분이 문제일까요?

lalupo20의 이미지

glFrustumf함수와 gluLookAt 함수 문제였습니다.

glFrustumf의 far 값과 gluLookAt함수의 eyeZ 값은 동일하거나 far 값이 더 커야 합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.