์ƒˆ์†Œ์‹

OpenGL ๋”ฐ๋ผ๊ฐ€๊ธฐ

[์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ์Šค] OpenGL ์‹œ์ž‘ํ•ด๋ณด์ž2 - ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ1

  • -
728x90

 

๋ณธ ํฌ์ŠคํŒ…์˜ ๋ชฉํ‘œ๋Š” 1ํŽธ์—์„œ ๋ณด์—ฌ์ฃผ์—ˆ๋˜ ์ฐฝ์— ์‚ผ๊ฐํ˜•์„ ๊ทธ๋ฆฌ๋Š”๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์‚ผ๊ฐํ˜•์„ ๊ทธ๋ฆฌ๊ธฐ ์ „์— ๋จผ์ € ์•Œ์•„์•ผํ•  ๊ฒƒ๋“ค์„ ์ƒ๊ฐํ•ด๋ณด์ž.

OpenGL์˜ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์‚ผ๊ฐํ˜•์„ ๊ทธ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

์šฐ๋ฆฌ๋Š” ์‚ผ๊ฐํ˜•์˜ ์ •๋ณด ๋ฐ์ดํ„ฐ๋“ค์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ์ปดํ“จํ„ฐ์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผํ•œ๋‹ค.

์ผ๋ จ์˜ ์ฒ˜๋ฆฌ๋“ค์„ ๊ฑฐ์ณ์„œ ์ปดํ“จํ„ฐ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ผ๋ จ์˜ ์ฒ˜๋ฆฌ๋“ค์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ

GL์€ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

'ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„์˜ ์ถœ๋ ฅ์ด ๋‹ค์Œ ๋‹จ๊ณ„์˜ ์ž…๋ ฅ์œผ๋กœ ์ด์–ด์ง€๋Š” ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ'๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

ํŒŒ์ดํ”„๋ผ์ธ

 

ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์กฐ๋Š” ์ผ์ข…์˜ ๋ถ„์—… ์ฒด์ œ์ด๋‹ค.

๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐฐ์น˜ํ•œ ๊ฒƒ์ด๋‹ค.

๊ธฐ๋Šฅ๋ณ„๋กœ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ์„œ๋กœ ๋™์‹œ์—, ๋˜๋Š” ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์„ฑ์ด ๋†’์•„์ง€๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

OpenGL ํŒŒ์ดํ”„ ๋ผ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒ„ํ…์Šค ํŒจ์น˜, ๋ฒ„ํ…์Šค ์‰์ด๋”, ํ…Œ์…€๋ ˆ์ด์…˜, ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์‰์ดํ„ฐ, ๋ž˜์Šคํ„ฐํ™”, ํ”„๋ž˜๊ทธ๋จผํŠธ ์‰์ด๋”, ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ํ•„์ˆ˜๋ถ€๋ถ„๋„ ์žˆ๊ณ  ํ•„์ˆ˜๊ฐ€ ์•„๋‹Œ๋ถ€๋ถ„๋„ ์žˆ๋‹ค.

ํ•„์ˆ˜๋ถ€๋ถ„๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋‘ ํ•˜๋“œ์›จ์–ด์— ์˜ํ•ด ๊ตฌํ˜„๋œ๋‹ค.

๊ณ ์ •๋œ ํŒŒ์ดํ”„๋ผ์ธ์€ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†๊ณ  ํ”„๋กœ์„ธ์„œ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ผ์„ ํ•œ๋‹ค.

์•„๋ž˜๊ทธ๋ฆผ์€ ๊ณ ์ •ํ•จ์ˆ˜์™€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ”ํ•จ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ OpenGL ํŒŒ์ดํ”„๋ผ์ธ์ด๋‹ค.

์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ

OpenGL ํŒŒ์ดํ”„๋ผ์ธ

์–ผ๋งˆ์ „์— ๋ฉด์ ‘์—์„œ Fixed Function Pipeline ์•„์‹œ๋ƒ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋Š”๋ฐ ๊ทธ๊ฒŒ ๊ณ ์ •ํ•จ์ˆ˜ ๋งํ•˜๋Š”๊ฑด์ง€ ๋ชจ๋ฅด๊ณ  ์–ด๋ฒ„๋ฒ„ ๊ฑฐ๋ ธ๋‹ค.. ์˜์–ด๋กœ๋„ ์•Œ์•„๋†“์ž..

 

 

1. ๋ฒ„ํ…์Šค ํŒจ์น˜(๋ฒ„ํ…์Šค ํ’€๋ง(์ •์  ํ’€๋ง)) & ๋ฒ„ํ…์Šค ์‰์ด๋”

OpenGL ํŒŒ์ดํ”„๋ผ์ธ

* ๋ฒ„ํ…์Šค ํŒจ์น˜

์ž๋™์ ์œผ๋กœ ๋ฒ„ํ…์Šค ์‰์ด๋”์— ์ž…๋ ฅ์„ ์ œ๊ณตํ•˜๋Š” ์ผ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์œ ์ผํ•œ ํ•„์ˆ˜ ์Šคํ…Œ์ด์ง€์ด๋‹ค.

 

์ œ์ผ ์ฒซ๋ฒˆ์งธ ๋ฒ„ํ…์Šค ํŒจ์น˜(Vertex Fetch)๊ฐ€ ๋ฌด์—‡์ด๋ƒ

Fetch๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž

https://www.computerhope.com/jargon/f/fetch.htm

์ด ์‚ฌ์ดํŠธ์— ๋”ฐ๋ฅด๋ฉด Fetch(๊ฐ€์ ธ์˜ค๊ธฐ)๋ž€ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ, ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์— ์˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฒ„ํ…์Šค ํŒจ์น˜๋ž€ ๋ง๊ทธ๋Œ€๋กœ ์ •์ ์„ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๋ง์ด๋‹ค.

๋ฒ„ํ…์Šค ํŒจ์น˜/๋ฒ„ํ…์Šค ํŒจ์นญ/input assembler ๋“ฑ๋“ฑ ๋ถ€๋ฅด๋Š” ๋ช…์นญ์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋˜๋ฐ ์ •์ ์„ ์ž…๋ ฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋ผ ๋ณด๋ฉด ๋œ๋‹ค.

 

* ๋ฒ„ํ…์Šค ์‰์ด๋”

๊ฐ€์ ธ์˜จ ํ›„์—๋Š” ๋‘๋ฒˆ์งธ ๋ฒ„ํ…์Šค ์‰์ด๋”(Vertex Shader) ๊ณผ์ •์ด๋‹ค.

๋ฒ„ํ…์Šค ์‰์ด๋”๋Š” 

https://ko.wikipedia.org/wiki/%EB%B2%84%ED%85%8D%EC%8A%A4_%EC%85%B0%EC%9D%B4%EB%8D%94

์—ฌ๊ธฐ์— ๋‚˜์™€์žˆ๋“ฏ์ด ๋ฌผ์ฒด์˜ ์ •์  ์ •๋ณด์— ์ˆ˜ํ•™์ ์ธ ์—ฐ์‚ฐ์„ ํ•จ์œผ๋กœ์จ ๋ฌผ์ฒด์— ํŠน๋ณ„ํ•œ ํšจ๊ณผ๋ฅผ ์ฃผ๋Š”๋ฐ ์“ฐ์ธ๋‹ค๊ณ  ํ•œ๋‹ค.

์ •์  ์ •๋ณด๋Š” ์œ„์น˜ ์ขŒํ‘œ, ์ƒ‰์ƒ, ํ…์Šค์ฒ˜, ์กฐ๋ช… ์ •๋ณด ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ธฐ์กด์˜ ์ •์ ์„ ์ง€์šฐ๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์ •์ ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด ๋ง์ด ๋ฌด์Šจ๋ง์ด๋ƒ๋ฉด,

๋งŒ์•ฝ ์ •์ ์ด X0,X1,X2์˜ ์œ„์น˜ ์ขŒํ‘œ๋กœ์จ ์ด์™€๊ฐ™์ด ๋“ค์–ด์™”๋‹ค๋ฉด ์‰์ด๋” ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ƒˆ๋กœ์šด X4 ์ขŒํ‘œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋˜์ง€ ํ˜น์€ ๋“ค์–ด์˜จ X0,X1,X2์˜ ์›๋ณธ ์ขŒํ‘œ๋ฅผ ๋ฐ”๊พผ๋‹ค๋˜์ง€์˜ ์ž‘์—…์€ ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ‘† ํ•˜์ง€๋งŒ ์œ ์˜ํ•ด์•ผํ•  ์ ์ด ์›๋ณธ์„ ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด์ง€ ๊ฐ€๊ณตํ•ด์„œ ์“ธ์ˆ˜๋Š” ์žˆ๋‹ค! ๐Ÿ‘†

 

์œ„์™€ ๊ฐ™์ด V(1,0,0)์„ ๋”ํ•ด์ฃผ๋ฉด ์‚ผ๊ฐํ˜•์€ ๋งˆ์น˜ x์ถ•์œผ๋กœ 1์”ฉ ์˜ฎ๊ธด๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

์˜ˆ์‹œ๋ฅผ ๋“  ๊ฒƒ ๋ฟ์ด์ง€ ๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ๋“ค์€ ์ธ์Šคํ„ด์‹ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ๋‹ค์‹œ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

๋งŒ์•ฝ 3์ฐจ์› ๋ฌผ์ฒด๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์ž‘ํ•œ๋‹ค๋ฉด,

์ด ๊ณผ์ •์—์„œ 3์ฐจ์› ์ขŒํ‘œ๋“ค์„ 2์ฐจ์› ์ขŒํ‘œ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚œ๋‹ค.

3์ฐจ์› ๊ณต๊ฐ„์•ˆ์—์„œ ๋ฌผ์ฒด๋“ค์€ ๋ชจ๋‘ x,y,z ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์‹ค์—์„œ ์šฐ๋ฆฌ๋Š” ๋ชจ๋‹ˆํ„ฐ์™€ ๊ฐ™์€ ํ‰๋ฉด ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ํ†ตํ•ด 3์ฐจ์› ์ขŒํ‘œ๋ฅผ ๋ณผ๊ฒŒ๋œ๋‹ค. ์ดํ•ด๊ฐ€ ์–ด๋ ต๋‹ค๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

์‚ฌ์ง„์„ ์ฐ๋Š” ๋Œ€์ƒ์€ ํ˜„์‹ค ๊ณต๊ฐ„์ธ 3์ฐจ์› ๊ณต๊ฐ„์— ์žˆ๊ณ  ์šฐ๋ฆฌ๋Š” 2์ฐจ์› ํ‰๋ฉด์ธ ์‚ฌ์ง„ ์•ˆ์— ํ”ผ์‚ฌ์ฒด๋ฅผ ๋‹ด๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ 3์ฐจ์› ์ขŒํ‘œ๋ฅผ 2์ฐจ์› ์ขŒํ‘œ๋กœ ๋ณ€๊ฒฝ์„ ํ•˜์—ฌ์„œ ์ •์ ์˜ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

 

2. ํ…Œ์…€๋ ˆ์ด์…˜

OpenGL์—์„œ ํ…Œ์…€๋ ˆ์ด์…˜ ๊ณผ์ •์€ ๊ณ ์ • ํ•จ์ˆ˜์ด๋ฉฐ

์ผ์ •ํ•œ ํ˜•ํƒœ์˜ ๋„ํ˜•๋“ค๋กœ ํ‰๋ฉด์„ ๋นˆํ‹ˆ ์—†์ด ์ฑ„์šฐ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

ํด๋ฆฌ๊ณค ์•ˆ์„ ํด๋ฆฌ๊ณค์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์ธ๋ฐ ์‹ค์ œ๊ฐ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

ํ•˜์ง€๋งŒ ํด๋ฆฌ๊ณค์˜ ์ˆซ์ž๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ์˜ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์œ ์˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

์ •ํ™•ํžˆ ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ด๋Ÿฐ๋Š๋‚Œ์ด๋ผ๋Š” ๊ฒƒ

๋‹ค์Œ์€ ํ…Œ์…€๋ ˆ์ด์…˜ ๊ณผ์ •์ด๋‹ค.

์ค„์—ฌ์„œ ํ…Œ์…€๋ ˆ์ด์…˜ ๋‹จ๊ณ„๋กœ๋งŒ ๋งํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝํŒŒ์ดํ”„๋ผ์ธ ์„ค๋ช…๋„ ๋งŽ์€๋ฐ ์ •ํ™•ํ•˜๊ฒŒ๋Š” 3๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

์•„๋งˆ ๋งŽ์ด ์“ฐ์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฒƒ ์•„๋‹๊นŒ ์‹ถ์€๋ฐ ํ…Œ์…€๋ ˆ์ด์…˜์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ•œ ํ‰๋ฉด์„ ์‚ผ๊ฐํ˜•์œผ๋กœ ๊ฝ‰์ฑ„์šฐ๋Š” ๋ฐฉ์‹์ด๋‹ค. 

์ด๋ฅผ ์ด์šฉํ•ด์„œ ํ•˜๋Š” ๊ฒƒ์€ ๋Š˜์–ด๋‚œ ๊ผญ์ง“์ ์˜ ๋†’๋‚ฎ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๋ฉด์„ ์šธํ‰๋ถˆํ‰ํ•˜๊ฒŒ๋” ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ณ€ํ™˜์„ ํ•˜๋ฉด ๋‹น์—ฐํžˆ ๊ผญ์ง“์ ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ์–‘๋„ ๋งŽ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฒ”ํ”„๋งตํ•‘์ด๋‚˜ ๋…ธ๋ง๋งตํ•‘ ๋“ฑ๋“ฑ ๋ˆˆ์†์ž„์„ ํ•˜๋Š” ๋งตํ•‘๋“ค์„ ๋งŽ์ด ํ–ˆ๊ณ  2010๋…„๋„๊นŒ์ง€ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ํ•œ๋‹ค. ์˜ˆ์ „์— ๋น„ํ•ด์„œ ํ˜„์žฌ๋Š” ์ปดํ“จํ„ฐ์˜ ์‚ฌ์–‘๋“ค์ด ๋งŽ์ด ์ข‹์•„์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๊ทผ์—๋Š” ์‚ฌ์šฉํ•œ ๊ฒŒ์ž„๋“ค๋„ ๊ฝค ์žˆ๋‹ค.

* ํ…Œ์…€๋ ˆ์ด์…˜ ์ปจํŠธ๋กค ์‰์ด๋”

ํ…Œ์…€๋ ˆ์ด์…˜ ์„ธ ๊ฐ€์ง€ ๋‹จ๊ณ„ ์ค‘ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋‹ค.

์ด ์‰์ด๋”๋Š” ๋ฒ„ํ…์Šค ์‰์ด๋”๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ฃผ๋กœ ๋‘ ๊ฐ€์ง€ ์ผ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

   * ํ…Œ์…€๋ ˆ์ด์…˜ ์—”์ง„์— ๋ณด๋‚ผ ํ…Œ์…€๋ ˆ์ด์…˜์˜ ๋ ˆ๋ฒจ์„ ๊ฒฐ์ •

   * ์ˆ˜ํ–‰๋œ ๋‹ค์Œ์— ์‹คํ–‰๋˜๋Š” ํ…Œ์…€๋ ˆ์ด์…˜ ์ด๋ฒจ๋ฅ˜์—์ด์…˜ ์‰์ด๋”์— ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ

 

* ํ…Œ์…€๋ ˆ์ด์…˜ ๊ณ ์ • ํ•จ์ˆ˜

ํŒจ์น˜๋กœ ํ‘œํ˜„๋˜๋Š” ๊ณ ์ฐจ ์„œํ”ผ์Šค๋ฅผ ์ , ์„ , ์‚ผ๊ฐํ˜•๊ณผ ๊ฐ™์€ ์ž‘์€ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋กœ ๋ถ„ํ• ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํ…Œ์…€๋ ˆ์ด์…˜ ์ด๋ฒจ๋ฅ˜์—์ด์…˜ ์‰์ด๋”์˜ ํ˜ธ์ถœ์— ์‚ฌ์šฉ๋  ์ธ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

https://ogldev.org/www/tutorial30/tutorial30.html

Primitive Generator๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์œ„์˜ ๋งํฌ์—์„œ ๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ค์ •๋“ค์„ ํ†ตํ•ด์„œ

glDrawElements(GL_PATCHES, m_Entries[i].NumIndices, GL_UNSIGNED_INT, 0);

์ด ๋ถ€๋ถ„์—์„œ GL_PATCHES ์ด ๋ถ€๋ถ„์— ํ…Œ์…€๋ ˆ์ด์…˜ ๊ด€๋ จ ๋ ˆ๋ฒจ ๋ฐ ๋ฐ์ดํ„ฐ๋“ค์„ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๋Š” ํ˜•์‹์ด๋‹ค.

์ด ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๋ถ€๋ถ„์—๋Š” ์„ค์ •์„ ํ•ด์ฃผ์ง€ ์•Š์•„๋„ GL_POINTS, GL_LINES, GL_LINE_STRIP ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋‚˜์ค‘์— ์‚ผ๊ฐํ˜•์„ ๊ทธ๋ฆด ๋•Œ ๋‹ค์‹œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

* ํ…Œ์…€๋ ˆ์ด์…˜ ์ด๋ฒจ๋ฅ˜์—์ด์…˜ ์‰์ด๋”

ํ…Œ์…€๋ ˆ์ดํ„ฐ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ฐ ๋ฒ„ํ…์Šค์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์”ฉ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰๋œ๋‹ค.

๋ ˆ์ด์•„์›ƒ ์ง€์‹œ์–ด๋กœ ํ…Œ์…€๋ ˆ์ด์…˜ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

 

 

--------------------------------------------------------------------------------------------------------------------------------------------

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.