[문제해결]opengl 구체 그리는 소스인데..

lalupo20의 이미지

{
		m_Stacks = 50;
		m_Slices = 50;
		vertexSize = 3 * ((m_Slices * 2 + 2) * m_Stacks);
		_vertex = new GLfloat[vertexSize];
		normalSize = vertexSize;
		_normal = new GLfloat[normalSize];
		textureSize = 2 * ((m_Slices * 2 + 2) * m_Stacks);
		_texCoord = new GLfloat[textureSize];
		colorSize = (4 * (m_Slices * 2 + 2) * m_Stacks);
		_colors = new GLfloat[colorSize];
		indiceSize = 1 * ((m_Slices * 2 + 2) * m_Stacks);
		_indices = new GLushort[indiceSize];
		int phiIdx, thetaIdx;
 
		for (phiIdx = 0; phiIdx < m_Stacks; phiIdx++){
 
			GLfloat phi0 = (GLfloat)PI * ((GLfloat)(phiIdx + 0) * (1.0f / (GLfloat)(m_Stacks)) - 0.5f);
			GLfloat phi1 = (GLfloat)PI * ((GLfloat)(phiIdx + 1) * (1.0f / (GLfloat)(m_Stacks)) - 0.5f);
 
			GLfloat cosPhi0 = (GLfloat)cos(phi0);
			GLfloat sinPhi0 = (GLfloat)sin(phi0);
			GLfloat cosPhi1 = (GLfloat)cos(phi1);
			GLfloat sinPhi1 = (GLfloat)sin(phi1);
 
			GLfloat cosTheta, sinTheta;
 
			for (thetaIdx = 0; thetaIdx < m_Slices; thetaIdx++){
				GLfloat theta = (GLfloat)(-2.0f*(GLfloat)PI*((GLfloat)thetaIdx)*(1.0f / (GLfloat)(m_Slices - 1.0f)));
				cosTheta = (GLfloat)cos(theta);
				sinTheta = (GLfloat)sin(theta);
 
				_vertex[vIndex + 0] = m_Scale*cosPhi0*cosTheta;
				_vertex[vIndex + 1] = m_Scale*(sinPhi0*m_Squash);
				_vertex[vIndex + 2] = m_Scale*(cosPhi0*sinTheta);
 
				_vertex[vIndex + 3] = m_Scale*cosPhi1*cosTheta;
				_vertex[vIndex + 4] = m_Scale*(sinPhi1*m_Squash);
				_vertex[vIndex + 5] = m_Scale*(cosPhi1*sinTheta);
 
				GLfloat texX = (GLfloat)thetaIdx * (1.0f / (GLfloat)(m_Slices - 1));
				_texCoord[tIndex + 0] = texX;
				_texCoord[tIndex + 1] = (GLfloat)(phiIdx + 0) * (1.0f / (GLfloat)(m_Stacks));
				_texCoord[tIndex + 2] = texX;
				_texCoord[tIndex + 3] = (GLfloat)(phiIdx + 1) * (1.0f / (GLfloat)(m_Stacks));
 
				vIndex += 2 * 3;
				tIndex += 2 * 2;
			}
 
			_vertex[vIndex + 0] = _vertex[vIndex + 3] = _vertex[vIndex - 3];
			_vertex[vIndex + 1] = _vertex[vIndex + 4] = _vertex[vIndex - 2];
			_vertex[vIndex + 2] = _vertex[vIndex + 5] = _vertex[vIndex - 1];
 
			_texCoord[tIndex + 0] = _texCoord[tIndex + 2] = _texCoord[tIndex - 2];
			_texCoord[tIndex + 1] = _texCoord[tIndex + 3] = _texCoord[tIndex - 1];
		}
	}

뭐라고 표현해야하지

일단 구체는 그려지는데

선이 삐져나와서 삼각형 혹은 사각형을 그리면서 화면 전체를 덮기도 하고 일부만 가리기도 하고 그러네요.

이 코드 자바로 안드개발할 때, 윈도에서 개발할 때 잘 썼던 코드인데

지금은 위에서 말씀 드린대로 문제가 좀 있는데 왜 그런지 모르겠습니다.

지금은 네이티드로 안드 개발 중 입니다.

저 코드는 어떤 책에서 배낀 소스인데 어떤 책인지 생각이 안 떠오르네요.

indice배열 크기가 잘못 되어 있었네요.

이부분 수정하니 문제가 발생하지 않습니다.

File attachments: 
첨부파일 크기
Image icon 2018_09_08_15.29.08.png674.09 KB
Image icon 2018_09_08_15.27.14.png771.92 KB
shint의 이미지

- 잘 되는 책 예제 소스를 참고해보세요.

OpenGL Sphere
http://www.cburch.com/cs/490/sched/feb8/

[C++] Drawing Sphere in OpenGL without using gluSphere()?
https://code.i-harness.com/en/q/754bec

Draw a solid sphere using openGL
https://www.codemiles.com/c-opengl-examples/draw-a-solid-sphere-using-opengl-t9008.html

OpenGL 원
https://www.google.com/search?q=OpenGL+원&num=20&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjKpfGb9qrdAhVKsVQKHekhDbwQ_AUICigB&biw=1481&bih=930#imgrc=CYrfpFC3GzScrM:

OpenGL - vertex이용한 구그리기 여러 도형그리기
http://myblogredvelet.blogspot.com/2016/08/opengl-vertex.html

360 VR sphere OpenGL 로 구현해보기 VR 공작소
http://blog.naver.com/PostView.nhn?blogId=spike25&logNo=220713156347

구(Sphere), 원통(Cylinder), 원뿔(Cone) 렌더링
http://www.gisdeveloper.co.kr/?tag=wpf-3d

webgl sphere
https://www.google.com/search?num=20&source=hp&ei=NYCTW6-ZOsSV8wWp5K2oCQ&q=webgl+sphere&oq=WebGL+Sp&gs_l=psy-ab.3.0.0l10.17255.21369.0.23457.12.10.0.0.0.0.122.866.1j7.9.0....0...1.1j4.64.psy-ab..3.8.866.0..0i131k1j0i10k1.110.t-x-rYogyMQ

WebGL Lesson 11 – spheres, rotation matrices, and mouse events
http://learningwebgl.com/blog/?p=1253

WebGL
http://learningwebgl.com/lessons/lesson11/index.html

OpenGL Sphere
https://www.opengl.org/discussion_boards/printthread.php?t=177206&page=1

Sphere Mapping Quadrics In OpenGL
http://nehe.gamedev.net/tutorial/sphere_mapping_quadrics_in_opengl/15005/
https://cafe.naver.com/programtravel/317

Three.js - Examples
https://threejs.org/examples/#webgl_morphtargets_sphere

Learning Three.js News # 15: Creative 3D Demos of the Week
http://learningthreejs.com
http://david.li/vortexspheres/
http://jeromeetienne.github.io/slides/howtomakeagame-nextgamefrontier-2014/#140

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.