OpenGL의 Picking에 대해....

newvgund의 이미지

현재 OpenGL을 열심히 공부하고 있다가, 뭔가 궁금한점이 생겼으나 정보를 구할수 없어서 이렇게 글을 올립니다;;;

현재 제가 보고 있는 책은 OpenGL 프로그래밍 가이드 4판으로, 1.4 버젼 기준으로 설명이 되어져 있는 녀석인데....

여기서 픽킹에 대해서 2가지 방법을 소개해 뒀더군요. 하나는 gluPickMatrix와 선택 모드를 이용한 방법이고, 다른 하나는 컬러버퍼 등을 이용하는 방법인데....

제가 DirectX를 배울때는 광선을 만들어 교차하는 오브젝트를 찾는 방법을 먼저 배웠습니다.

그렇다 보니 OpenGL의 선택 모드에 대해서 좀 의아 스러운점이 있네요~~

현재 OpenGL이 3.0 까지 나왔고... 3.1 규약이 나온걸로 알고 있는데, 아직까지도 선택 모드로 픽킹을 수행하나요?

선택 모드로 픽킹을 수행 할시의 이점은 무엇인지 궁금하네요.... 아무리 실제로 렌더링을 걸지 않는다고 해도, 2번이나 그리는건 성능 저하가 있을거 같은데....

아, 마지막으로 OpenGL이 DirectX에 비해서 성능이 그렇게 떨어지는 편인가요?

답변 주시면 감사하겠습니다 ㅠ~

체스맨의 이미지

말씀하신
'광선을 만들어 교차하는 오브젝트를 찾는 방법'
에 대해, OpenGL 선택 모드도 내부적으로는 이와 같은 방법으로 구현돼 있습니다.
이미 말씀하신 것처럼 두번 그리는 게 아니고, 도형의 geometry 를 입력받음으로써, 내부적으로 교차 테스트를 수행하는 것입니다.
그래서 D3D 하실 때 방법과 크게 다른 것이 아니라 성능 저하에 대해서는 논의할 바가 없습니다. 오히려 드물긴 해도 하드웨어가 교차 테스트를 지원하는 경우라면, CPU 를 이용해서 교차 계산을 하는 것보다는 GL 함수 호출이 빠르겠지요. 교차 테스트가 직접 지원되지 않더라도 행렬, 벡터 연산 기능들이 GPU 안에 있을 것이므로,가능한 경우 그것을 이용하도록 드라이버가 구현돼 있을 것이고요...

컬러 버퍼를 이용하는 방법은, 매우 효율적이어서, 선택시 즉시 반응(하이라이트 등)이 가능하나 두번 그려야 하는 단점이 있구요.

OpenGL 이 Direct3D 보다 현실적으로는 성능이 떨어지는 부분이 있긴 한데, 이건 API 이슈가 아니라 구현의 문제입니다.
과거 소프트웨어 렌더 기반 OpenGL 구현에 있어서도, MS OpenGL 구현은 성능이 좋지 않은 이슈가 있었는데, SGI 에서 윈도용 OpenGL 소프트웨어 기반 구현를 릴리스하여 OpenGL의 API 구성의 문제점이 아니라는 것을 입증했던 적도 있구요.

아무래도 윈도우즈가 가장 인기 있는 플랫폼이다보니, Direct3D 에 대한 지원이 활발한 이유겠지요.

Orion Project : http://orionids.org

newvgund의 이미지

아주 속 시원하게 알게 되었네요!!

책을 보면서, 배웠던 것의 차이점에 대해서 의아하고 있었고... 어느 웹 문서 상에서는 2번 그리게 되서 성능이 떨어진다- 라고 적혀 있어서 정말 그런줄 알았네요;;

역시 제 생각과 크게 다르지 않은듯 싶네요.... 열심히 공부 해봐야 겟습니다!

좋은 답변 정말 감사 드립니다 :)

새로운 세상을 만들자 :)

댓글 달기

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