나는 iPhone에서 OpenGL ES를 얼마 동안 사용 해 왔으며 기본적으로 예제에서 보았고 내 자신의 것으로 채택 된 작은 명령 집합을 제외하고는 꽤 길을 잃었습니다. 다른 플랫폼에서 OpenGL을 사용하고 잘 이해하고 싶습니다.
책을 검색 할 때마다 초보자에게는 흥미롭지 않고 매우 어려운이 거대한 성경이 있습니다. 주말에 OpenGL을 배우는데 몇 주를 보낸다면 시간과 돈을 쓰는 가장 좋은 방법은 무엇입니까?
나는 iPhone에서 OpenGL ES를 얼마 동안 사용 해 왔으며 기본적으로 예제에서 보았고 내 자신의 것으로 채택 된 작은 명령 집합을 제외하고는 꽤 길을 잃었습니다. 다른 플랫폼에서 OpenGL을 사용하고 잘 이해하고 싶습니다.
책을 검색 할 때마다 초보자에게는 흥미롭지 않고 매우 어려운이 거대한 성경이 있습니다. 주말에 OpenGL을 배우는데 몇 주를 보낸다면 시간과 돈을 쓰는 가장 좋은 방법은 무엇입니까?
답변:
포함 된 많은 (NeHe) 튜토리얼은 더 이상하지 말아야 할 것들을 가르쳐주기 때문에 OpenGL 튜토리얼을 볼 때주의하십시오. 오늘날 OpenGL은 10 년 전과 다른 야수입니다.
더 이상 사용되지 않는 것을 피하는 몇 가지 좋은 예는 다음에서 찾을 수 있습니다. http://www.g-truc.net/post-tech-content-sample.html
OpenGL 샘플 팩 4.0.1.0은 샘플 수를 총 58 개의 샘플로 가져 오는 업데이트입니다. 32 비트 및 64 비트의 Visual Studio 2008 및 2010 용 13 개의 OpenGL 4 샘플, 33 개의 OpenGL 3.3 샘플 및 12 개의 OpenGL 2 샘플을 포함합니다.
배울 수있는 것들이 많이 있습니다. OpenGL을 처음 접하는 사람의 관점에서 각각에 대한 나의 생각은 다음과 같습니다.
읽을 수있는 예제 코드가 많이 있습니다. G-truc의 예제 는 꽤 광범위하며 많은 고급 기능을 포함합니다.
그러나 초보자 인 경우 예제에서 배우는 것은 끔찍한 학습 방법입니다. 실제로 이해하지 못하는 코드를 읽는 것이 왜 작동하는지 가르쳐주지는 않습니다. 실제로, 위의 링크 된 페이지의 텍스트는 예제가 초보자를위한 것이 아니라고 구체적이고 올바르게 설명합니다.
주석이 달린 경우가 아니라면 (자습서 인 경우) 베어 소스 코드에서 배우는 것은 쉬운 일이 아닙니다. 그렇게하려고 시도하면화물 컬트 스타일 프로그래밍 및 복사 및 붙여 넣기 코딩이 권장됩니다. 실제로하고있는 모든 작업이 한 장소에서 다른 장소로 코드를 복사하는 것만으로도 어떻게 작동하는지 이해하고 있다는 것을 쉽게 확신 할 수 있습니다. 당신은 사물을 혼합하고 일치시킬 수 있지만, 적절한 교육 자료 없이는 진정한 이해 를 얻기가 어렵습니다.
OpenGL 개발을위한 실제 구매 가능한 책이 많이 있습니다. 여기서 가장 큰 두 가지에 대한 생각을 다룰 것입니다.
이것은 순전히 실용적인 관점에서 다소 문제가 있습니다. 제 7 판은 GL 3.0 및 3.1에 적용됩니다. 어느 정도 오래된 것입니다. 그 이후로 OpenGL에 유용한 기능 이 많이 추가되어 글쓰기 방식이 바뀌 었습니다. 그리고 그것들 모두가 하드웨어 기능은 아닙니다.
8 판은 곧 출시 될 예정이며 4.1을 다룰 것입니다. 오래된 고정 기능을 포함하는지 여부에 대한 단어는 없습니다.
이 책은 괜찮다고 말하고 싶습니다. 가장 큰 문제는 정보의 구성입니다. 학습용 도서보다 포괄적 인 참조 매뉴얼과 비슷합니다. 여기 내가 의미하는 바가 있습니다.
가르 칠 때 가장 중요한 일 중 하나는 중요하지 않은 정보로 학생에게 과부하를주지 않는 것입니다. 그러나 레드 북은 정확히 그렇게합니다. 재료를 소개 할 때 많은 재료를 소개합니다 . 그것의 대부분은 당면한 과제에 불필요하다.
이야기하고 이야기 할 때 책을 좋은 학습 자료로 만드는 것이 중요합니다. 레드 북은 더 적절한 때까지 정보를 보유하지 않습니다. 삼각형과 원형을 그리는 방법에 대해 이야기 할 때, 삼각형과 그림을 그리는 것에 대한 모든 것을 한 번에 이야기 합니다. 모든 옵션, 모든 기능, 모든 매개 변수 등을 다룹니다.
그것은 좋은 정보 조직이 아닙니다.
이 책의 다섯 번째 판은 핵심 GL 3.x에만 적용되므로 고정 기능은 없습니다.
그러나이 책의 일반적인 구성은 제 4 판 버전의 구성과 거의 동일합니다. 이것은 4 판이 고정 기능을 사용하고 이후까지 셰이더를 도입하지 않았기 때문에 불가능 해 보입니다.
이것이 성취 된 방법은이 책에 대한 나의 # 1 불만이다. 본질적으로 저자는 고정 함수 OpenGL 형식을 구현하는 라이브러리를 구축했습니다. VAO, 버퍼 객체, 쉐이더 및 기타 다양한 것들을 래핑하여 GL 파이프 라인의 세부적인 작동 방식에 대해 이야기 할 필요없이 객체, 행렬 수학 및 텍스처를 그릴 수 있습니다.
이러한 세부 사항을 모두 숨기면 재료가 더 쉽게 소화됩니다. 그러나 종종 도서관없이 실제로 기능하는 방법을 모른 채 사람들이 Superbible에서 멀어지는 것을 보게 될 것입니다. 셰이더가 버퍼 객체에 연결하는 방법, 데이터가 파이프 라인으로 흐르는 방식 등을 실제로 이해하지 못합니다.
레드 북보다 유용한 책입니다. 다른 모든 것이 실패하면 작업을 수행합니다. 그러나 나는 그것이 더 나을 수 있다고 생각합니다.
또한 일부 검토 자에 따르면 정규화 된 값을 사용하여 속성 데이터를 포장하는 등의 유용한 정보가 누락 된 것으로 보입니다.
배울 수있는 많은 온라인 자료가 있습니다.
다른 사람들이 말했듯이 NeHe의 자습서 는 매우 오래된 것입니다. 고정 기능 OpenGL에 중점을 둡니다. 고정 기능 GL을 배우기 쉽다고 종종 언급되는데, 이는 사실입니다. 그러나 이것이 좋은 생각은 아닙니다.
고정 기능 파이프 라인이 실제로 작동 하는 방식을 이해하는 것은 어렵습니다. 쉐이더를 배우는 것보다 어렵다고 말할 수 있습니다. 일단 가져 오면 셰이더는 간단합니다. 텍스처 환경, 복잡한 요소 등의 복잡한 부분을 이해하는 것은 매우 까다 롭고 모든 것이 올바르게 설정되도록 문서를 자주 방문해야합니다. 모든 것을 올바르게 이해하더라도 작은 실수를 저지르면 모든 것이 깨지기 쉽습니다.
차이점은 이해 하지 않고 고정 기능 작업을 수행 할 수 있다는 것입니다. 이것은화물 컬트 프로그래밍을 장려합니다. 실제로 무엇을하고 있는지 몰라도 화면에서 무언가 를 얻을 수 있습니다. OpenGL.org 포럼에서 gluLookAt의 작동 방식을 모르는 사람들, 조명의 어려움, 텍스처 환경과 관련된 특별한 효과를 얻으려는 사람들에 이르기까지 고정 기능을 둘러싼 미세한 부분에 대한 질문이 끊임없이 나타납니다.
그래서 저는 NeHe가 OpenGL을 배우는 좋은 방법이라고 생각하지 않습니다.
위의 주석은 Swiftless , Lighthouse 등의 셰이더 기반이 아닌 자습서에 사용할 수 있습니다 .
Wikibook OpenGL Programming 은 아마도 NeHe와 현대적 일 것입니다. GL 버전 2.1은 모바일 플랫폼과 관련성을 유지하기 위해 다루고 있습니다. 그것이 당신에게 중요하다면, 반드시 여기를보십시오.
NeHe의 다른 문제, 따라서이 Wikibook은 소스 코드에 중점을 둡니다. 텍스트 대 코드 비율은 매우 작습니다. 거기이다 많은 코드가 있지만, 텍스트는 정말 어떻게 모든 작품 설명하지 않습니다.
예를 들어, Tutorial 2의 하단을보십시오. 블렌딩을 소개합니다. 블렌딩이 어떻게 작동하는지 말하지 않습니다. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
실제로 의미하거나 의미 하는 바는 없습니다 . "이것은 투명하게 만드는 몇 가지 코드입니다."
그것은 최고의 학습 환경이 아닙니다.
Swiftless에는 OpenGL 4.x 튜토리얼 세트가 있습니다 . Durian Software에는 셰이더 기반 OpenGL 자습서도 있습니다. 그리고 "OpenGLBook.com"튜토리얼이 있습니다.
이 모든 것의 공통점은 ... 불완전하고 버려진 것입니다. 그들은 모두 약 4-5 개의 튜토리얼을 얻은 후 떨어졌습니다. 그들 중 아무도 텍스처링, 조명 또는 이와 유사한 것에 도달하지 못했습니다. 글쎄, 두리안은 텍스처링을했지만 조명은하지 않았다.
그들에게서 많은 것들을 볼 수 있지만 누락 된 부분도 많이 있습니다.
내 자신의 Modern 3D Graphics 튜토리얼을 검토 하는 것은 끔찍한 이해 충돌입니다. 대신, 나는 그들 뒤에있는 조직과 그들이 왜 좋다고 생각하는지에 대해 길게 설명 할 것입니다.
그렇습니다. 튜토리얼 17로 작업하고 있습니다. 프로젝트는 죽지 않았습니다.
처음 세 장은 실제로 OpenGL 파이프 라인이 어떻게 작동하는지 배우는 것에 관한 것입니다. Superbible이 세부 사항을 숨기려고 시도했기 때문에 실패했습니다. 대신, 나는 그 세부 사항들을 정말로, 정말로 잘 설명하려고 시도합니다. 자꾸. 소개에서는 파이프 라인을 일반 텍스트로 설명합니다. 첫 번째 튜토리얼에서는 코드 반주로 설명합니다. 두 번째 튜토리얼은 더 많이 방문합니다.
거기서부터 자연스럽게 물체 위치 지정으로 넘어갑니다. 이것은 유니폼을 소개하지만 유니폼과 원근 투영을 동시에 방해하고 싶지 않았습니다. 그래서 두 개념을 분리했습니다. 프로젝션 후 깊이 버퍼링은 합리적인 다음 단계로 보였고 그 다음으로 변환 및 행렬의 작동 방식이 이어졌습니다. 그 후 카메라. 쿼터니언을 사용한 회전은 늦게 추가되었지만 신진 그래픽 프로그래머에게 이야기하는 것이 중요하다고 생각합니다.
조명 튜토리얼은 다시 서로를 구성합니다. 확산 후 조각 별 조명, 반사광. 다이나믹 레인지는 흥미로운 선택이었습니다. 대부분의 입문 자료는 그 거리를 유지하려고 노력하지만 그것을 받아들입니다. 빛의 강도가 항상 [0, 1] 범위에 있다고 생각하면 요즘 그래픽 프로그래머가 아닙니다. 선형 컬러 파이프 라인을 유지하는 방법을 모른다면 요즘에는 그래픽 프로그래머가 아닙니다.
임 포스터의 조명에서 마지막 것은 이상했습니다. 특히 책이 진행되는 동안 일부 OpenGL 함수를 표시하는 대신 문제를 해결하는 자습서를 디자인하려고합니다. 제 튜토리얼 디자인의 대부분은 특정 주제에 대해 이야기하는 방법을 찾는 동시에 실제 주제를 만들면서도 "지금 우리는 X를 배우고 있습니다." 지오메트리 쉐이더는 실제로 많은 문제를 해결하지 못하기 때문에 어렵다.
임 포스터는 GS가 실제로 해결하는 데 유용한 문제를 대변했습니다. 또한 discard
조각의 깊이와 같은 덜 사용되는 것들에 대해 이야기 할 수있었습니다 . 그리고 그것은 실제로 쉐이더의 힘을 보여줍니다 : 평평한 사각형을 구체로 만들 수 있습니다.
텍스처링 튜토리얼도 흥미 롭습니다. 세 번째가 sRGB 텍스처에 대해 잠시 이야기하는 것을 보류하기 전까지 확산 색상 텍스처에 대해 이야기하는 이유 중 하나입니다. 이런 식으로 선형 문제를 처리하지 않고도 텍스처 (데이터로드, 쉐이더에 넣기, 필터링, 클램핑 등)와 관련된 기본 문제에 대해 이야기 할 수있었습니다. 그런 다음 해당 주제에 대한 전체 자습서를 사용할 수 있습니다. 따라서 선형 색상 파이프 라인을 유지 관리하는 것이 얼마나 중요한지를 실제로 강조 할 수있었습니다 .
내 애완 동물 친구 중 하나입니다.
preamake
무대 자체 에서 실패 합니다 :( ... 여가 시간에 우분투 + 이클립스로 코드 자습서를 실행할 수 있다면 큰 도움이 될 것입니다. .. 당신은 다른 코드 튜토리얼 이유는 내가 초보자 OpenGL을 학습에 대한 지금까지 웹에 "arcsynthesis"최고의 장소를 보았다 있다는 것을 관련된 제공과 독서 자료를 사용하는 것입니다
이 튜토리얼 시리즈부터 다시 시작하는 것이 좋으며 http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html 보다 우수하고 최신 기능을 사용합니다.
OpenGL에 대한 나의 유일한 책은 "OpenGL SuperBible, 4th edition"이고 5th는 몇 주 안에 출시 될 예정입니다. 초보자와 고급 프로그래머 모두에게 좋다고 생각합니다.
편집 : 프로그래밍을 배우는 경우 최신 기술 동향을 따르지 않을 수도 있습니다. 방금 출시 된 하나의 방법론, 5 가지 새로운 인터페이스 / 버전을 사용하여 전문가가 될 가능성이 있습니다. 우리는 3 개월마다 쉐이더가 진보하는 것을 보았습니다. 따라서 최고의 문서 (일반적으로 프리미티브)가있는 것을 선택하고 몇 가지 프로그램을 만들고 점차 오래된 코드에 부딪 칠 가능성이 있기 때문에 점차 발전하십시오. 그것이 도움이되기를 바랍니다!
평소처럼 배우는 가장 좋은 방법은 배우는 것입니다. 교과서를 읽어야한다고 느끼지 않는 한 돈을 쓰지 않으면 대부분의 정보가 온라인에서 찾을 수 있습니다. OpenGL을 배우는 것 외에도 Linear Algebra를 닦고 싶을 수도 있습니다.
내가 직면 한 큰 문제는 최신 버전의 OpenGL에서 사용되지 않는 많은 것들입니다.
내가 찾은 최고의 자료는 Joe 's Blog에 있습니다. 최신 파이프 라인을 소개하고 다른 곳에서 찾은 것보다 더 읽기 쉬운 방식으로 몇 가지 예를 살펴 보는 것이 가장 좋습니다. Nehe 가 최근에 부부를 업데이트 한 것 같습니다. 수업이 아직 오래되었지만 뉴스 중 일부는 관심이있을 수 있습니다. Lazy Foo ' 도 훌륭한 리소스 였지만 Nehe와 마찬가지로 자습서에서는 사용되지 않는 자료를 사용합니다.
주말이나 2 일이 지나면 편안 해지면 모든 것을 적용하기 위해 작은 프로젝트를 수행하십시오. 브레이크 아웃 또는 테트리스-코드 자체에 집중할 수있는 것. 얼마나 간단한 지에 관계없이 떠나서 실제 프로젝트를 시도 할 때 훨씬 더 많은 것을 배웁니다.
여기 또 다른 것이 있습니다. 아주 좋습니다. 챕터는 4 개뿐입니다.
다른 하나는 http://www.arcsynthesis.org/gltut/ 입니다. 이것은 거대하고 느리고 프로파일입니다.
http://www.opengl.org/wiki/Getting_started 를 추적하는 것을 잊지 마십시오
OpenGL을 배우는 가장 좋은 방법은 그것을 사용하는 것입니다. 본인의 엔진을 작성하는 것이 좋습니다. 이것은 어려운 작업처럼 보일 수 있습니다. 첫 번째 엔진은 그리 좋지는 않지만 많은 것을 배울 것입니다.
기본적으로 : 엔진을 작성하고, 게임에 사용하고, 마음에 들지 않는 것을 파악한 후 다시 작성하십시오. 계속 그렇게하면 OpenGL에서 더 나아질 것입니다. :)
필요한 것 :
이것은 이미 많은 작업입니다.
우리는 Orchard의 Craps 게임에서 iPhone 용 OpenGL (ES)을 사용하지만 미친 3D 기술을 가진 프로그래머가 처리했습니다. 그래서이 때문에 OpenGL (ES)을 배워서 내가 말하는 내용을 알고 팀과 함께 코딩 할 수있게되었습니다.
일련의 자습서를 통해 도움이되는 사이트는 Jeff LaMarche의 블로그 ( http://iphonedevelopment.blogspot.com) 이며 여기에 그의 OpenGL 게시물에 대한 링크가 있습니다. http://iphonedevelopment.blogspot.com/2009/05/ opengl-es-from-ground-up-table-of.html
OpenGL.org에는 다음 두 가지 링크가 있습니다. http://www.opengl.org/code/ 및 http://www.opengl.org/resources/features/
가장 좋은 방법은 여러 번 위에서 언급 한 것입니다. 뛰어 들어가서 작은 일을하세요. 흥미롭고, 당신의 길을 개척하십시오. 장면, 카메라 및 재질 (음영)을 이해하는 것이 중요합니다. 이러한 개념을 이해하고 나면 물리 엔진, 충돌 감지, 입자 효과 등을 살펴볼 수 있습니다. 우와! (^_^)
모든 노력에 행운을 빕니다, 케빈
글쎄, 아무도 OpenGL Programming Guide에 대해 이야기 하지 않았습니다.이 특정 버전은 없지만 오래된 버전은 꽤 좋았습니다.
이 비디오 튜토리얼 시리즈가 가장 좋은 방법이라고 말하지는 않지만 잘 설명되어 있습니다. www.71squared.com/2009/03/iphone-game-programming-tutorial-1
http://www.opengl-tutorial.org/
'현대적인'OpenGL (3.0 / 4.0 코어, 예를 들어 glBegin / glEnd와 같은 구식은 가르치지 않음)에 대한 튜토리얼이 있습니다. 튜토리얼에서는 셰이더를 사용하지만 기본 사항은 자세하게 설명되어 그 과정에서 견고한 수학적 기초를 구축합니다. 텍스트는 코드 * 샘플과 유용한 시각화로 멋지게 마무리됩니다.
중급 자습서에서는 Quaternions 또는 Lightmaps 사용과 같은 내용을 다룹니다 .
. * glm 은 수학 라이브러리로 사용됩니다.
NeHe로 시작하여 화면에 첫 번째 삼각형을 빠르게 가져옵니다. 3D 프로그래밍의 기본 개념을 이해하려면 초보자 자습서를 몇 가지 수행하십시오. OpenGL ES를 언급했듯이 3D 프로그래밍의 기본 사항 (매트릭스, 사용 대상, 스크린에 정점을 투영하는 데 다른 매트릭스를 사용하는 방법, 정점 등)을 이미 알고 있다면, 그런 다음 NeHe와 함께 시간을 낭비하지 마십시오. 속도가 느려질 수 있습니다 (나중에 "학습"해야 할 사항을 가르쳐 줌).
그 외에도, 나는 그것을 배우는 가장 좋은 방법은 실천하는 것임을 동의합니다. 헬로 월드가 아닌 첫 번째 프로젝트는 2D 게임 (또는 2D 게임 엔진) 일 수 있습니다. 2D 응용 프로그램에 최신 OpenGL을 사용하면 많은 관련 개념 (예 : 버퍼 및 셰이더 사용)을 배울 수 있으며 3D 프로젝트보다 덜 까다로울 것입니다. 그런 다음 3D 응용 프로그램을 통해 배운 내용을 적용 할 수 있습니다.
네헤의 튜토리얼이 최고라고 반복해서 들었습니다. http://nehe.gamedev.net/ 나는 빨간 책을 샀다 ...