[문제해결]opengl 구체 그리는 소스인데..
글쓴이: lalupo20 / 작성시간: 토, 2018/09/08 - 2:58오후
{ 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:
첨부 | 파일 크기 |
---|---|
2018_09_08_15.29.08.png | 674.09 KB |
2018_09_08_15.27.14.png | 771.92 KB |
Forums:
참고해보세요.
- 잘 되는 책 예제 소스를 참고해보세요.
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
댓글 달기