3D 가속기에 대하여..

googlejoa의 이미지

2D 지원이니..3D 가속기를 달았느니 하는 말들이 있는데 이 부분에 대해서 정보 좀 주세요.

1. 실제 프로그램을 할때 3D 가속기의 유무에 따른 프로그램을 해야 된다는 말인지.

2. 2D 로도 입체적인 그래픽을 만들 수 있지 않습니까? 이게 3D 와 뭐가 다른지..

도움 좀 주세요.
감사합니다.

정태영의 이미지

openGL 이나 directX 등의 그래픽 api 를 하드웨어적으로 처리할 수 있다는 말입니다...

아무래도... 하드웨어적으로 처리할 경우 소프트웨어로 처리하는 것에 비해 훨씬 빠르게 동작할 수 잇도록 만들 수 있기 때문에... 그래픽카드 등에서 저런 것들을 지원하는 경우 훨씬 빠르게 렌더링해낼 수 잇ㅤㅉㅛㅤ :)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

ganadist의 이미지

googlejoa wrote:
2D 지원이니..3D 가속기를 달았느니 하는 말들이 있는데 이 부분에 대해서 정보 좀 주세요.

1. 실제 프로그램을 할때 3D 가속기의 유무에 따른 프로그램을 해야 된다는 말인지.


표준 3d 그래픽 api(opengl이나 directx등.. )를 사용하면 별로 신경안써도 됩니다. 해당 라이브러리에서 하드웨어 지원여부에 따라서 하드웨어/소프트웨어적으로 처리해줍니다. 단 직접 하드웨어를 제어한다면 따로따로 해줘야 겠죠.

googlejoa wrote:

2. 2D 로도 입체적인 그래픽을 만들 수 있지 않습니까? 이게 3D 와 뭐가 다른지..

도움 좀 주세요.
감사합니다.

일반적으로 3d그래픽이라는것은 3축의 정보를 가지는 어떤 오브젝트를 만들고, 여러가지 처리(광원, 원근, 텍스쳐, 기타등등)을 한 후 평면(2d)위에 투사시키는 겁니다. 엄밀히 따지자면 3d display장치가 나오지 않는한은 같은 2d 이미지처리의 한부분이겠죠.

그냥 3d 그래픽을 처리하는데 편한 부분이 많다라고 생각하시면 될 것 같습니다.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

googlejoa의 이미지

답변들 감사드립니다.

그렇다면 개념적으로 2D 나 3D 나 전혀 차이가 없다는 의미인가요?

즉, 사람들이 3D 형태의 그래픽을 그리기 위해서 무수한 삽질을 하다보니 아예 필요한 함수를 라이브러리로 만들어 놓자. 그래서 directX 등의 그래픽 api 를 만들었고, 그후에 이것을 하드웨어로 구현하여 그래픽카드에 내장하자. 그래서 만든게 3D 가속기다.. 이 말씀들인가요?

알려주세요. 꾸벅.

warpdory의 이미지

googlejoa wrote:
답변들 감사드립니다.

그렇다면 개념적으로 2D 나 3D 나 전혀 차이가 없다는 의미인가요?

즉, 사람들이 3D 형태의 그래픽을 그리기 위해서 무수한 삽질을 하다보니 아예 필요한 함수를 라이브러리로 만들어 놓자. 그래서 directX 등의 그래픽 api 를 만들었고, 그후에 이것을 하드웨어로 구현하여 그래픽카드에 내장하자. 그래서 만든게 3D 가속기다.. 이 말씀들인가요?

알려주세요. 꾸벅.

3D 는 2D 에 축이 하나 더 추가 된 것(2D 는 X/Y 축, 3D 는 X/Y/Z 축)입니다. 그러다보니 계산이 더 복잡해지고... 그리고 3D 를 2D 로 변환시키는 게 더 들어갈 뿐... 기본적으로는 별 차이가 없습니다. 물론, ... 계산량은 무지하게 많지요.
그래서 그 계산량 많은 것을 아예 하드웨어에 떠 맡기자... 해서 만든 게 3D 가속기 입니다.


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

익명 사용자의 이미지

http://en.wikipedia.org/wiki/ViRGE

표준화된 3D API를 사용하지 못한 가속기도 있었습니다.

Prentice의 이미지

평면에 사람 얼굴을 그려놓습니다. 2D 비트맵입니다.

가상 공간에 사람 얼굴을 모델링합니다. 3D 모델입니다.

화면에는 똑같이 2D로 표시됩니다.

---

사람 뒤통수가 보고 싶습니다. 2D의 경우에는 새로 뒤통수를 그리는 수 밖에 없지만 3D의 경우 사람을 뒤로 돌려놓거나 "카메라"를 사람 뒤로 옮기면 됩니다.

첫 글의 2번 질문에 대해 뭐가 궁금하신지 잘 모르겠습니다.

익명 사용자의 이미지

검은해 wrote:
평면에 사람 얼굴을 그려놓습니다. 2D 비트맵입니다.

가상 공간에 사람 얼굴을 모델링합니다. 3D 모델입니다.

화면에는 똑같이 2D로 표시됩니다.

---

사람 뒤통수가 보고 싶습니다. 2D의 경우에는 새로 뒤통수를 그리는 수 밖에 없지만 3D의 경우 사람을 뒤로 돌려놓거나 "카메라"를 사람 뒤로 옮기면 됩니다.

첫 글의 2번 질문에 대해 뭐가 궁금하신지 잘 모르겠습니다.

음.. 그러니까 3D 모델은 3차원에 대한 정보를 "이미" 갖고 있고 2D 는 갖고 있지 않아서 예를 들어 다른 면을 보여 주고자 하는 경우에는 다시 그려줘야 한다는 말이군요. (그렇죠?)

그리고 3D 가 화면에는 똑같이 2D 로 표시된다는 것이 원근감 등을 보여주도록 회전 등을 시킨다는 말인가요?

모두들 감사합니다. ^^

Prentice의 이미지

2D의 경우 다른 면을 보여 주고자 하는 경우에 사람이 그림을 다시 그려야죠. 3D의 경우 컴퓨터가 다시 그립니다. 그리고 2D/3D에 상관없이 그래픽카드가 다시 그 내용을 화면에 다시 그립니다.

3D가 2D로 투영되는 것은 화면이 평평하기 때문입니다. 원근감과 회전에 대해 뭐가 궁금하신지 잘 모르겠습니다.

익명 사용자의 이미지

검은해 wrote:
2D의 경우 다른 면을 보여 주고자 하는 경우에 사람이 그림을 다시 그려야죠. 3D의 경우 컴퓨터가 다시 그립니다. 그리고 2D/3D에 상관없이 그래픽카드가 다시 그 내용을 화면에 다시 그립니다.

3D가 2D로 투영되는 것은 화면이 평평하기 때문입니다. 원근감과 회전에 대해 뭐가 궁금하신지 잘 모르겠습니다.

검은혜님 답변주셔서 감사합니다.

그러니까 예를 들어 정육면체의 도형을 그리는 경우에 2D 모델을 이용한다 함은 2차원적인 사각형과 해당 사각형을 잇는 선분으로 그리게 되고,
3D 모델을 이용하게 되면 이미 3차원 좌표가 모두 포함되어 있으므로 이를 화면에 적절히 표시해 준다는 말인가요?

즉, 정육면체를 회전시키고자 하는 경우 2D 모델을 회전되고 있는 동안의 각각의 그림을 그려주어서 각각 그림에 대한 데이타가 있어야 하는 것이고, 3D 모델인 경우에는 각각의 그림에 대한 데이타가 있는 것이 아니라 "실시간으로 계산" 하여 그려 준다는 의미인가요?
(왠지 그럴거 같네요..)

그리고 2D 화면에 나온다는 말은...
가상공간에서 입체적 형상을 갖는 3D 개체가 화면에 표시되기 위해서는 어느 축을 기준으로 회전할 수 있으므로(어느 면이 보일지 모르므로) 그 회전 정도에 대한 정보를 제공해 주면 그에 따라 2D 화면상에 3D 개체를 표시해 준다는 의미겠죠?

sodomau의 이미지

구글조아 wrote:
검은해 wrote:
2D의 경우 다른 면을 보여 주고자 하는 경우에 사람이 그림을 다시 그려야죠. 3D의 경우 컴퓨터가 다시 그립니다. 그리고 2D/3D에 상관없이 그래픽카드가 다시 그 내용을 화면에 다시 그립니다.

3D가 2D로 투영되는 것은 화면이 평평하기 때문입니다. 원근감과 회전에 대해 뭐가 궁금하신지 잘 모르겠습니다.

검은혜님 답변주셔서 감사합니다.

그러니까 예를 들어 정육면체의 도형을 그리는 경우에 2D 모델을 이용한다 함은 2차원적인 사각형과 해당 사각형을 잇는 선분으로 그리게 되고,
3D 모델을 이용하게 되면 이미 3차원 좌표가 모두 포함되어 있으므로 이를 화면에 적절히 표시해 준다는 말인가요?


2차원적 사각형과 해당 사각형을 잇는 선분이란게 정확히 무슨 뜻인지
모르겠지만, 님께서 생각하시는게 맞는거 같습니다.

Quote:

즉, 정육면체를 회전시키고자 하는 경우 2D 모델을 회전되고 있는 동안의 각각의 그림을 그려주어서 각각 그림에 대한 데이타가 있어야 하는 것이고, 3D 모델인 경우에는 각각의 그림에 대한 데이타가 있는 것이 아니라 "실시간으로 계산" 하여 그려 준다는 의미인가요?
(왠지 그럴거 같네요..)

네 그렇습니다.

Quote:

그리고 2D 화면에 나온다는 말은...
가상공간에서 입체적 형상을 갖는 3D 개체가 화면에 표시되기 위해서는 어느 축을 기준으로 회전할 수 있으므로(어느 면이 보일지 모르므로) 그 회전 정도에 대한 정보를 제공해 주면 그에 따라 2D 화면상에 3D 개체를 표시해 준다는 의미겠죠?

3D 모델을 2D인 화면에 표시하기 위해서는
사영(projection)이라는 변환을 거쳐야 하는데,
회전 정도라기 보단, 3d 좌표계 내에서 어느 방향으로 바라본다던지에
관한 것을 가지고 처리를 하게 됩니다. 이런 변환을 통해서
(이런 변환들은 계산량이 많기 때문에 하드웨어 가속기를 이용하게 됩니다.)
3d 좌표들을 2d좌표로 변환한 다음에 화면에 뿌려지게 되면
3d 게임등에서 보이는 화면이 보이게 됩니다.
Prentice의 이미지

구글조아 wrote:
그러니까 예를 들어 정육면체의 도형을 그리는 경우에 2D 모델을 이용한다 함은 2차원적인 사각형과 해당 사각형을 잇는 선분으로 그리게 되고,
3D 모델을 이용하게 되면 이미 3차원 좌표가 모두 포함되어 있으므로 이를 화면에 적절히 표시해 준다는 말인가요?

정말 선분과 사각형으로 그린다면 벡터 그래픽이 되겠죠.

구글조아 wrote:
즉, 정육면체를 회전시키고자 하는 경우 2D 모델을 회전되고 있는 동안의 각각의 그림을 그려주어서 각각 그림에 대한 데이타가 있어야 하는 것이고, 3D 모델인 경우에는 각각의 그림에 대한 데이타가 있는 것이 아니라 "실시간으로 계산" 하여 그려 준다는 의미인가요?
(왠지 그럴거 같네요..)

래스터 그래픽과 3D 모델을 대조하자면 말씀하신 내용은 대체로 맞습니다.

2D 벡터 그래픽으로 평면에 4각형을 그릴 경우 실시간 계산으로 회전이 가능합니다.

익명 사용자의 이미지

아직도 부분적으로 확실하게 이해 못하는 부분이 있긴 하지만 대충은 이해되었습니다.

개인적으로 조금 더 공부해 봐야겠네요.

어쨌든 많은 도움 되었습니다.

모두들 감사해용 ~~~ ^^

익명 사용자의 이미지

아,,참.. 한가지만 더 여쭤 볼께요.

2D 에서는 벡터방식 또는 래스터 방식으로 구분 될 수 있을텐데,

3D 방식도 그렇게 구분될 수 있을까요?
그러니까 래스터 방식의 3D 라는게 있을까요?

(없을 것 같은데 말이죠. 3D 모델 자체가 왠지 벡터방식일 듯 하네요.)

Prentice의 이미지

현재 3D는 모두 벡터 기반이 아닐까 생각합니다. 텍스쳐 같은 것은 비트맵을 쓰더라도요.

그런데 정말 궁금해서 여쭤보시는 건가요..?

익명 사용자의 이미지

구글조아 wrote:
아,,참.. 한가지만 더 여쭤 볼께요.

2D 에서는 벡터방식 또는 래스터 방식으로 구분 될 수 있을텐데,

3D 방식도 그렇게 구분될 수 있을까요?
그러니까 래스터 방식의 3D 라는게 있을까요?

(없을 것 같은데 말이죠. 3D 모델 자체가 왠지 벡터방식일 듯 하네요.)

벡터 (스캔) vs. 래스터(스캔) 방식은 엄밀히 말해서 CRT 모니터의 방식입니다.
벡터스캔 방식은 동그라미를 그릴 때 전자총이 동그라미의 궤적을 따라가면서 그리죠( 레이저 쇼를 생각하시면 되겠네요)

래스터스캔은 현재 대부분의 display가 그러하듯 전자총이 옆으로 주욱
달리면서 각위치에 맞는 빛을 뿌려주면서 화면 끝에 도달하면 엔터키를 치듯
맨 앞으로 가면서 한칸 내려와서 다시 주욱 뿌리는 방식입니다.

차라리 벡터 vs. 비트맵이라고 말씀하시는 게 낫겠지요.

2D 그래픽도 경우에 따라서는 벡터입니다(illustrator, sodipodi)

3D 그래픽도 각종 매핑의 경우(텍스쳐, 범프, 디스플레이스먼트, 노멀 등등)는 비트맵을 사용하기도 합니다. 또한 voxel 기법 등은 polygon과는 좀 다르지요. ( http://robot.kaist.ac.kr/~kyungku/haptics/hapticvol.htm ) bitmap 을 층층이 쌓는 거라고 생각하시면 편하겠네요. 물론 여기도 벡터가 계산상 사용되지만 생각하시는 벡터가 polygon 같은 개념이라면 조금 다르겠지요?

끝으로 일반적으로 사용하는 그래픽카드는 현대의 CRT(LCD라 한들)대응이므로 최종적으로 신호를 뿌릴 때는 래스터스캔 방식입니다.

Prentice의 이미지

제 경우 raster graphics에 대한 얘기를 한 것이였습니다.

http://en.wikipedia.org/wiki/Raster_graphics

Voxel에 대해 처음 알았습니다. 감사합니다. :)

익명 사용자의 이미지

검은해 wrote:

그런데 정말 궁금해서 여쭤보시는 건가요..?

무슨 말씀이신지...
제가 고마우신 분들 시간을 괜히 뺏겠습니까? ^^

무단포옹 wrote:

벡터 (스캔) vs. 래스터(스캔) 방식은 엄밀히 말해서 CRT 모니터의 방식입니다.
벡터스캔 방식은 동그라미를 그릴 때 전자총이 동그라미의 궤적을 따라가면서 그리죠( 레이저 쇼를 생각하시면 되겠네요)

래스터스캔은 현재 대부분의 display가 그러하듯 전자총이 옆으로 주욱
달리면서 각위치에 맞는 빛을 뿌려주면서 화면 끝에 도달하면 엔터키를 치듯
맨 앞으로 가면서 한칸 내려와서 다시 주욱 뿌리는 방식입니다.

차라리 벡터 vs. 비트맵이라고 말씀하시는 게 낫겠지요.

2D 그래픽도 경우에 따라서는 벡터입니다(illustrator, sodipodi)

3D 그래픽도 각종 매핑의 경우(텍스쳐, 범프, 디스플레이스먼트, 노멀 등등)는 비트맵을 사용하기도 합니다. 또한 voxel 기법 등은 polygon과는 좀 다르지요. ( http://robot.kaist.ac.kr/~kyungku/haptics/hapticvol.htm ) bitmap 을 층층이 쌓는 거라고 생각하시면 편하겠네요. 물론 여기도 벡터가 계산상 사용되지만 생각하시는 벡터가 polygon 같은 개념이라면 조금 다르겠지요?

끝으로 일반적으로 사용하는 그래픽카드는 현대의 CRT(LCD라 한들)대응이므로 최종적으로 신호를 뿌릴 때는 래스터스캔 방식입니다.

감사합니다....... 그런데 어렵네요..

차분히 공부 좀 해야겠습니다.

익명 사용자의 이미지

2D가속기는 1992년에서 3년 즈음 win3.1이
나오면서 보편화되기 시작했던 걸로 기억합니다.

2D가속기가 없는 그래픽카드에서
드롭다운 메뉴를 클릭하면 메뉴가 그려지는 게 보입니다.
(요즘 컴퓨터 버벅거릴때처럼)
또 창을 좌우로 움직일때 마다 창을 다시 그리는 게 보여지죠...

사실상 1024X768(XGA급)을 지원하는 그래픽카드 이후부터는
모든 제품이 아주 기본적인 2D가속을 지원합니다.
아마도 2D가속기 없는 그래픽카드를 써보신 분들은
이곳에 거의 없으실 듯합니다.
저도 win3.1시절에 친구컴퓨터에서 한번 봤죠..
그때 처음 2D가속의 위력을 실감했습니다.

벡터니 이런 것보다는 사각형과 같은
특정한 도형을 그리는 것이나
그래픽메모리의 특정한 영역만을 얼마나 빠른 속도로
다시 그리는 것(Flip)이 성능의 잣대입니다.

아주 원시적이죠.

최근에는 2D가속기능중에는
동영상재생등에서 화면크기를 자유롭게 늘리고 줄이는 것과
레이어기능등과 같이 색을 mix하는 것에 대한 가속이
주 역할인 듯합니다.(알파블랜딩)

이젠 2D가속에서는 제품마다 품질차이가 거의 없고,
사실상 이기능이 없는 제품도 없기 때문에...
더 이상의 의미는 없는 듯 합니다.

요기 올라 있는 DirectFB시연 동영상을 보시면,
순수한 2D가속에 대한 범주에 대해서 쉽게 이해하실 듯 합니다.

댓글 달기

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