[완료]OpenGL에 대한 몇 가지 질문.

hiluciano의 이미지

OpenGL Superbible 3판을 보면서 opengl을 배우고 있는 중인데요
몇가지 궁금한 것이 생겼습니다.

1. 현재 얼마나 많은 장치들이 OpenGL을 지원하나요?
아이폰이나 닌텐도 DS같은 것도 OpenGL을 지원하나요?

2. 윈도우에서는 M$가 다이렉트 X를 밀어주기 위해서 의도적으로 제일 옛날 버전의 OpenGL 라이브러리를
제공한다고 하던데요 실제로 교재 뒷부분에 나온 예제 몇 개가 버전이 낮다고 실행이 안 되던데
이럴 경우 어떻게 버전을 높일 수 있나요?

3. 비주얼 스튜디오 2008에서 C로 OpenGL 함수들을 사용할 때
프로젝트 속성에서 종속된 정적 라이브러리를 보면 opengl32.lib파일이 기본으로 들어가 있던데
이거 없애고 더 높은 버전의 라이브러리 파일로 대체할 수 있나요?

4. 마지막으로 현재의 32비트 OS에서 OpenGL은 4바이트짜리 float형에 특화되어서
long long이나 double형의 값을 입력하더라도
내부적으로는 float형으로 변환해서 처리하기 때문에
처음부터 버텍스 좌표 같은 데이터가 최대한 float형이 되게 코드를 짜라는 이야기를 들었는데요
이것이 64비트 환경에서도 여전히 4바이트짜리 float형에 맞춰야 하나요?
아니면 C 언어 자체가 64비트 환경에서는 float형의 크기가 달라지나요?

oranke89의 이미지

1. 윈도환경, 그리고 XBox 말고는 오픈지엘이 대세라고 보시면 됩니다. 아이폰의 경우 OpenGL-ES 라는 규약을 지원합니다. 닌텐도의 경우 홈브루에서는 OpenGL 비슷한 함수를 제공하지만 실제 개발환경은 모르겠습니다.

2. 오픈지엘은 규약이기 때문에, 실제 구현은 그래픽카드를 만드는 제조사가 담당합니다. 참고로 윈도에 기본으로 깔려있는 녀석은 OpenGL 1.1 이고 하드웨어 가속이 되지 않습니다. 적절한 그래픽 카드 드라이버를 설치하면 자동으로 버전이 올라갑니다.

3. 해당 라이브러리가 결국 2에서 설치한 제조사의 DLL과 연결되기 때문에 별다른 추가작업은 필요 없습니다.

아르아의 이미지

OpenGL프로그래밍을 하려면
gl.h같은 헤더파일을 include시킬테고,
gl.h에 정의된 함수들을 적절히 사용하게 될텐데요.
그렇게 만든 프로그램을 컴파일해서 실행시킬때
누가, 어떻게 그래픽카드가 OpenGL가속을 지원하는 드라이버가
시스템에 존재한다는것을 알아채서 윈도우즈에 있는 기본드라이버에 연결시키지 않고
그래팍카드 제조사의 dll과 연결시켜주는건가요?

마찬가지로 리눅스에서도 보통 OpenGL 프로그래밍을 할때 보통 mesa3d 에 있는 OpenGL헤더파일을 include하는듯 하던데,
어떻게 리눅스용 그래픽드라이버가 깔려있는지를 확인해서 해당 제조사가 만든 OpenGL가속을 사용할지
아니면 그냥 mesa3d라이브러리를 사용할지를 판단할 수 있는것인지 정말 신기합니다. 궁금하기도 하고요

beyond의 이미지

리눅스의 경우
nvidia 또는 fglrx 를 설치하면

/usr/lib/ 있는 libGL(mesa) 가 다른 디렉토리(/usr/lib/??/divert)로 이동되고,
벤더에서 제공해주는 파일이 /usr/lib 에 설치됩니다.(설치 스크립트)

설치한 것을 삭제하면 mesa 를 /usr/lib 로 다시 옮겨 옵니다.

재수없어서 어떠한 이유로 패키지 설치가 이상하게되면 사람도, 컴퓨터도 엄청 헷갈립니다.

ifree의 이미지

4. 버텍스 좌표 데이타가 float 형인 것은 DirectX 도 마찬가지입니다.
doule 로 작성하면 버퍼로 쓸 수 없기 때문에 float 로 해야 하는데 float 나 double 이나 보기에는 차이가 없는 것 같습니다.
64 비트라고 해서 float 가 8바이트가 되지는 않죠.

댓글 달기

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