대부분의 튜토리얼이 오래되었을 때 OpenGL로 시작하기 [닫기]


16

이 질문과 같은 많은 질문이 이미 있다고 확신하지만 OpenGL 라이브러리를 지속적으로 업데이트하면 문제가 모두 사라지고 1 ~ 2 개월 안에 여기에 대한 답이 다시 쓸모가 없습니다.

C ++을 사용하여 OpenGL에서 프로그래밍을 시작할 준비가되었습니다. 작동하는 컴파일러가 있습니다 (DevCpp; VC ++로 전환하도록 요청하지 말고 이유를 묻지 마십시오). 이제 OpenGL로 프로그래밍하는 방법에 대한 견고한 자습서를 찾고 있습니다. 내 조수는 NeHe Productions가 제공하는 자습서를 찾았지만 알게되었으므로 날짜가 지났습니다. (OpenGL 캔버스를 지원하기 위해 기본 창을 결합했지만)

그런 다음 온라인으로 가서 FreeGL을 사용하는 OpenGL SuperBible을 찾았습니까? 그러나 내가 알고 싶은 것은 SuperBible 5th Edition이 더 이상 최신 버전인지 여부입니다. 내가 찾은 freeglut에 대한 제안은 최신 버전이 2.6.0이라고 말했지만 지금은 2.8.0입니다!

  • OpenGL SuperBible은 여전히 ​​좋고 시작하기에 좋은 곳입니까?
  • OpenGL을 배우기에 더 좋은 곳이 있습니까?
  • DevCpp include 디렉토리 (GL에있을 수도 있음)에 freeglut를 간단히 저장할 수 있습니까, 아니면 중요한 절차가 있습니까?
  • 방금 시작한 이후로 묻지 않은 의견이나 제안이 있습니까?

@dreta가 나를 위해 몇 가지 사항을 정리 했으므로 이제 무엇을 물어볼 지 더 잘 알고 있습니다.

OpenGL에 직접 액세스하는 대신 래퍼 라이브러리를 사용하여 OpenGL로 시작하고 싶다고 생각합니다.
초보자를 위해 프로그래밍하고 더 좋은 결과를 얻는 것이 더 쉬울 것이라고 생각하지만 아직 모든 거친 세부 사항을 이해할 필요는 없습니다 (@stephelton이 언급했듯이).

문제는 더 이상 지원되지 않는 함수에 대한 정의되지 않은 참조가없는 라이브러리를 찾을 수 없다는 것입니다. Freeglut는 작동하는 것처럼 들리지만 여전히 GLU를 사용합니다.
누구든지 내가 할 수있는 일을 알고 있습니까?
또한 첫 번째 SuperBible의 소스를 컴파일하려고 시도했지만 GLAPI가 유형으로 정의되지 않았기 때문에 오류가 발생했습니다. 오류는 GLU 라이브러리에서 발생합니다.

SuperBible을 사용하고 싶지만이 문제를 해결하는 방법을 모르겠습니다.


2
GCC로 전환해야합니다.
notlesh

DevCpp는 단지 IDE입니다. GCC를 실행합니다 (특정). 그러나 언급 된 이클립스 CDT는 지난 10 년간 포기하지 않았기 때문에 바람직하다.
캐스퍼 Beyer

4
@Casper DevCpp 레거시의 상속자는 Code :: Blocks이며 여전히 정기적으로 업데이트됩니다.
Alex Shepard

1
OpenGL을 래퍼 라이브러리로 사용하려면 SFML 을 사용해보십시오 . SFML은 창 만들기, 타이머 등과 같은 일반적인 항목을 제공하면서 텍스트와 간단한 모양을 그릴 수도 있습니다. SFML 함수와 원시 API 호출을 혼합하여 원할 때마다 "raw"OpenGL을 사용하여 익사 할 수 있습니다.
Oskar N.

1
제목에 "{CLOSED}"를 추가하여 질문을 "닫을"수 없습니다. 중재자가 질문을 종료하거나 충분한 사용자가 투표를하여 투표를 종료합니다. 편집 내용을 롤백하겠습니다. 중재자가 닫으
려고

답변:


19

우리의 거주자 Nicol Bolas 는 최신 그래픽 프로그래밍에 관한 온라인 서적을 유지 합니다 . 최신 OpenGL을 사용하며 모든 것이 쉽게 사용할 수있는 속도로 도입되므로 시작하기에 좋은 곳입니다. 현대 OpenGL을 배우기 위해 그것을 사용하고 있으며 지난 2 개월 동안 놀라운 일을하고 있습니다.

여기저기서 약간의 지식이 있습니다. OpenGL 위키 는 잘 관리되어 있습니다. 이 코드는 "모범 사례"가 아니며 OpenGL 버전과 관련하여 애매 모호한 경우가 있지만 드문 경우가 아니라면 훌륭한 리소스입니다.

GLSL에 대해 배우려면 lighthouse3D 의 GLSL Core Tutorial이 있습니다. 이것이 사이트에서 "신뢰할"유일한 핵심 지식이지만, 휴식은 구식 인 경향이 있습니다.

최신 OpenGL이 수행되는 방식을 이해하기 시작하면 특정 정보를 찾고, 오래된 코드를 걸러 내고 가장 중요하게 사양을 읽는 것이 쉬워집니다. 당신은 어딘가에서 시작해야합니다.

실제로는 아니지만 대부분의 OpenGL 서적은 구식입니다. 새로운 SuperBible은 일종의 괴물이며 누구에게도 추천하지 않습니다. OpenGL 4.1 용 OpenGL 프로그래밍 가이드는 9 월 16 일에 나왔지만 불행히도 7 판은 더 이상 사용되지 않는 코드를 사용하므로 기다려야합니다.

물론 여기에서 언제든지 질문 할 수 있습니다.


1
왜 SuperBible을 제안하지 않겠습니까?
Codesmith

3
@AUTO SuperBible의 5 번째 판은 OpenGL 주위에 커스텀 래퍼를 사용하여 "액세스 가능"하게합니다. 많은 예제가 사용자 정의 랩퍼를 과도하게 사용합니다. 제공되는 내용은 OpenGL 핵심 사양입니다. 더 이상 사용되지 않는 OpenGL을 명시 적으로 배울 필요가 없다면 내가 보는 방식만으로도 잊어 버릴 수 있습니다. 그것을 배우는 데 아무런 소용이 없습니다. 핵심 사양은 훨씬 명확하고 강력합니다.
dreta

@AUTO 핵심 사양은 처음에 훨씬 더 까다 롭습니다. 좋은 일입니다. 렌더링 프로세스의 대부분을 처리하여 해당 프로세스를 완전히 이해하고 제어 할 수 있도록합니다. 더 이상 사용되지 않는 코드보다 더 많은 가능성을 열어줍니다. 그 후 glut와 같은 것들없이 OS의 API와 lanuch OpenGL을 배울 수 있다면 원더 랜드에 있습니다.
dreta

GLU 라이브러리는 더 이상 사용되지 않으며 완전히 지원되지 않는 것 같습니다. 사양을 사용하여 GLU의 필요성을 무시하고 직접 액세스 할 수 있습니까? 따라서 GLU 라이브러리가 참조하는 존재하지 않는 함수에 대한 링커 오류가 더 이상 발생하지 않습니까?
Codesmith

@AUTO GLU는 완전히 불필요합니다. 그래픽 프로그래밍 수업 중 10 발 극으로 만졌습니다 (더 이상 사용되지 않는 코드를 사용해야했고 고통스럽고 표준이 수업 프로그램보다 빠르게 변경되었습니다). 더 이상 사용되지 않는 코드를 돕는 라이브러리 일뿐입니다. GLU로 코드를 설정했다면 아마 냄새가 난다.
dreta

1

이 질문을한지 오래되었지만이 질문이 귀하와 같은 질문을하는 사람들에게 도움이되기를 바랍니다.

에 대한 미니 북을 읽음으로써 OpenGL을 시작했습니다 arcsynthesis.org. 누가 그것을 썼는지 확실하지 않습니다. 사이트 등록이 만료 된 것 같지만 여기에서 찾을 수 있어야합니다 ( http://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/) . OpenGL 3.3을 사용하므로 최신 파이프 라인과 관련된 모든 관행을 사용하지만 테셀레이션 또는 계산 셰이더에 노출되지는 않습니다.

살펴볼 가치가있는 또 다른 사이트는 https://open.gl/ 입니다. 그것은 매우 초보자에 초점을 맞춘 것 같고 위의 자료만큼 깊이있는 것은 다루지 않지만 시작한 사람들에게는 좋은 출발점이 될 수 있습니다.

도움이 필요하면 OpenGL 위키를 읽고 함수 이름을 Google에 입력하십시오. 위키의 일부 페이지는 완전히 쓸모가 없지만 참조 및 학습 자료로 도움이되는 페이지도 있습니다.


1
- 허용 대답에 언급 된 사람은 그것을 니콜 올가미 쓴 gamedev.stackexchange.com/users/8240/nicol-bolas
제시 Dorsey에

0

이 오래된 자습서는 여전히 초보자와 관련이 있습니다. 사실, 최신 버전의 OpenGL보다는 시작하는 것이 좋습니다. 최신 버전에서는 지오메트리를 그리는 더 쉬운 방법 (즉시 모드 그리기)을 버렸습니다.

최신 버전에서는 정점 배열을 준비하고 보내야하며 제공하는 배열에서 정점이 어떻게 배열되는지 비디오 카드에 알려야합니다. 이것들은 디버깅하기에 번거 롭습니다.

일부 버전 (즉, OpenGL ES 2.x)에서는 자체 조명 방정식 (조각 셰이더 형식)을 제공하고 원하는 정점 데이터를 변환하여 원하는 화면 (정점 셰이더)이되도록합니다. 이것은 디버깅하기가 더 어려우며 초보자에게는 적합하지 않습니다 (제 생각에는).

그래서 저는 여러분이 그 NeHe 튜토리얼 등으로 돌아가서 시작할 것을 제안합니다. "오래된"것일 수 있지만 여전히 작동합니다. OpenGL의 렌더링 파이프 라인에서 실제로 발생하는 상황을 이해하고 이러한 기능을 작동시키는 수학적 개념에 대한 느낌을 얻으면 최신 방법 중 일부를 살펴볼 수 있습니다. OpenGL에서 렌더링.


실제로 그들은 작동하지 않습니다. 그래서이 질문을 게시했습니다. 그들은 더 이상 사용되지 않는 gluPerspective 기능을 사용하고 있으며 절대 대체물은 없습니다.
Codesmith

1
그것은 OpenGL 함수가 아닙니다. 다른 라이브러리에서 제공하는 별도의 유틸리티 기능입니다. 코드를 쉽게 찾을 수 있습니다. 그리 어렵지 않습니다.
notlesh

고맙지 만 사용 방법을 모르는 불완전한 대체품 만 찾았습니다. "float * matrix"라는 인수를 허용하는 반면, 오래된 것은 일부 내부 매트릭스를 사용합니다. 그때 무엇을 넣어야합니까?
Codesmith

"gluPerspective 구현"에 대한 Google의 첫 번째 조회는 정확히 당신이 찾고있는 것입니다. OpenGL의 일부 최신 버전에서는 사용할 수없는 glFrustum을 호출합니다 (ES 2.x에는 포함되지 않음). 그것조차도 impl을 찾기가 너무 어렵지 않습니다.
notlesh

0

다른 사람들이 말했듯이 대부분의 책은 더 이상 사용되지 않거나 너무 발전되었습니다. 그럼에도 불구하고 필자는 SuperBible 5 판을 추천하지만 OpenGL에서 수행 할 수있는 작업에 대한 간단한 개요를보고 뷰 / 투영 등과 같은 것들에 익숙해 지기만합니다.

최신 OpenGL로 즉시 뛰어 들면 처음에는 압도 당할 수 있으므로, 더 이상 사용되지 않는 버전에서 기본적인 작업을 수행하는 방법을 배우십시오.

또한 최근에 찾은 훌륭한 자습서가있는 사이트를 추가하고 싶습니다. http://ogldev.atspace.co.uk/


고마워, 나는 그 튜토리얼을 확인합니다; 그러나 OpenGL SuperBible을 사용하려면 여전히 질문이 남아 있습니다. freeglut가 기반을두고 있기 때문에 GLU를 어떻게 수정합니까?
Codesmith

@AUTO : FreeGLUT은 GLU를 기반으로하지 않습니다. 일부 FreeGLUT 함수는 GLU를 호출하지만 해당 함수를 호출하지 않으면 문제가 없습니다.
Nicol Bolas

그러나 SuperBible 이 이러한 기능을 호출 하지 않습니까? 그리고 만약 그렇다면, 나는 그것을 사용할 수 없습니다 .
Codesmith

정말, 내 의견은 SuperBible과 함께 제공된 소스 코드를 방해하지 않는 것입니다. 그것을 읽으십시오. 그러나 처음부터 모든 것을 만들려고 노력하십시오. GLU 관련 문제에서 라이브러리를 올바르게 구성 / 설치하지 않았다고 생각합니다. 최신 버전의 MinGW를 다운로드하십시오. 또한 최신 버전의 freeglut를 다운로드하여 컴파일하거나 사전 컴파일 된 라이브러리를 찾으십시오. 어쨌든, 시작하는 방법을 계획하는 데 많은 시간을 소비하기보다는 학습을 시작해야합니다.
Grieverheart

@AUTO : 왜 SuperBible이 그것들을 부를 가능성이 있습니까? 그것들을 호출하면 SuperBible의 코드가 작동하지 않습니다. 그것이 그들이 전화 하지 않는 이유 입니다.
Nicol Bolas

0

불행히도 arcsynthesis.org (허용 된 답변에 언급 된 사이트)가 다운되어있는 것 같습니다. (편집 : 이 링크에서 사용할 수 있습니다 !).

Anton Gerdelan의 OpenGL 4에 대한 자습서는 2014 년 중반부터 매우 읽기 쉽고 최신 상태입니다. 처음 몇 개는 무료이며 나머지는 아마존에서 구입할 수 있으며 작은 가격으로 훌륭한 리뷰가 있습니다. 지금까지 나는 기뻤습니다.

http://www.opengl-tutorial.org/ 에 OpenGL 3.3+에 대한 더 많은 무료 자습서가 있습니다. 그것들은 2012 년으로 거슬러 올라가지 만 다른 출처에 대한 보충 자료가 될 수 있습니다.


OGLDev는 최신의 깊이 있고 무료입니다. ogldev.atspace.co.uk/index.html
Yattabyte


볼 수있어서 좋습니다! 이 자료도 확인하겠습니다.
iHateCamelCase
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.