E D R , A S I H C RSS

3DGraphics Foundation Summary


1. ์ œ 1 ์žฅ ๊ทธ๋ž˜ํ”ฝ ๊ธฐ์ดˆ ์ด๋ก 

1.1. ์ˆ˜ํ•™์  ๊ธฐ์ดˆ ์ด๋ก 

1.1.1. ์ขŒํ‘œ๊ณ„

  • ์˜ค๋ฅธ์† ์ขŒํ‘œ๊ณ„ : ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ•™์ฑ…์—์„œ ๋งŽ์ด ๋ณด๋˜ ๊ทธ ์ขŒํ‘œ๊ณ„๋‹ค. ์œ„์•„๋ž˜๊ฐ€ Z, ์•ž๋’ค๊ฐ€ X, ์ขŒ์šฐ๊ฐ€ Y, ๊ทธ๋ž˜ํ”ฝ์Šค์—์„  ์ž˜ ์•ˆ์“ด๋‹ค.
  • ์™ผ์† ์ขŒํ‘œ๊ณ„ : ๊ณต๊ฐ„๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ž˜ํ”ฝ์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ์•ž๋’ค๊ฐ€ Z, ์ขŒ์šฐ๊ฐ€ X, ์œ„์•„๋ž˜๊ฐ€ Y
  • ๊ตฌ๋ฉด ์ขŒํ‘œ๊ณ„ : ์ฃผ๋กœ ์‹œ์ ์„ ํ‘œํ˜„ํ• ๋–„ ์ž˜ ์“ฐ์ธ๋‹ค. ์›์ ์—์„œ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ ฯ, z์ถ•๊ณผ์˜ ๊ฐ ฮธ, x์ถ•๊ณผ์˜ ๊ฐ ฯ† ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด๊ฑธ ๊ทธ๋ฆผ์— ๋”ฐ๋ผ ํ’€์–ด๋ณด๋ฉด,
    • x = ฯsinฮธcosฯ†
    • y = ฯsinฮธsinฯ†
    • z = ฯcosฮธ

1.1.2. ๋ฒกํ„ฐ

  • ๋ญ.. ๋ณ„๋กœ ๋ณผ๊ฑฐ ์—†๋‹ค. ๋‹ค ๊ณ ๋“ฑํ•™๊ต ๋•Œ ํ–ˆ๋˜ ๊ฑฐ๋‹ค. ์ƒ์†Œํ•œ๊ฑฐ๋งŒ ๋ช‡๊ฐœ ์ ์–ด๋ณด๋ฉด..
  • ๋ฒกํ„ฐ ํ‘œํ˜„์„.. ์›๋ฌธ์ž๋กœ ํ•ด์•ผ๊ฒ ๋‹ค. ํ™”์‚ดํ‘œ ๊ทธ๋ฆด๋ผ๋‹ˆ๊นŒ ์—ด๋ผ ๊ท€์ฐฎ๋‹ค.
  • ์™ธ์ ์€ โ“Xโ“‘ ์ด๋ ‡๊ฒŒ ํ‘œํ˜„ํ•œ๋‹ค. ๋ฐฉํ–ฅ์€ ๋ฒกํ„ฐ โ“์—์„œ ๋ฒกํ„ฐโ“‘์ชฝ์œผ๋กœ 180๋„๋ณด๋‹ค ์ž‘์€ ๊ฐ์œผ๋กœ ๋Œ๋ฆด๋•Œ ๋‚˜์‚ฌ๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉํ–ฅ์ด๋‹ค. ์ด๊ฒŒ ๋ญ” ๊ฐœ์†Œ๋ฆฌ๋ƒ--;
  • ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ : |โ“Xโ“‘| = |โ“||โ“‘|sinฮธ
  • ์™ธ์ ์˜ ์„ฑ์งˆ : ๋‘ ๋ฒกํ„ฐ์™€ ๋™์‹œ์— ์ˆ˜์ง์ธ ๋ฒกํ„ฐ

1.1.3. ํ–‰๋ ฌ

  • 3X3์˜ ํ–‰๋ ฌ์‹

~cpp 
     | a1 b1 c1 |      | b2 c2 |      | b1 c1 |      | b1 c1 |
 D = | a2 b2 c2 | = a1 |       | - a2 |       | + a3 |       |
     | a3 b3 c3 |      | b3 c3 |      | b3 c3 |      | b2 c2 |

  • ๋ฒกํ„ฐ์˜ ์™ธ์ ์„ ํ–‰๋ ฌ๋กœ ํ‘œ์‹œํ•˜๊ธฐ(i,j,k๋Š” ๊ฐ๊ฐ x,y,z๋ฐฉํ–ฅ์˜ ๋‹จ์œ„๋ฒกํ„ฐ)

~cpp 
         | i   j   k  |
 โ“Xโ“‘ = | Xa  Ya  Za | 
         | Xb  Yb  Zb |

  • ๊ผญ์ง€์  ๋ฐฉํ–ฅ ํŒ๋ณ„? ์ด๊ฑด ์–ด๋”ฐ ์“ฐ๋Š” ๊ฑฐ์ง€..

1.2. ๋™์ฐจ ์ขŒํ‘œ๊ณ„์™€ 3์ฐจ์› ๋ณ€ํ™˜ ํ–‰๋ ฌ

  • ๋™์ฐจ ์ขŒํ‘œ๊ณ„? ๊ทธ๋ƒฅ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด, ํ‰ํ–‰์ด๋™์„ ์ผ๋ฐ˜์ ์ธ ์ผ์ฐจ๋ณ€ํ™˜์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ, ํ•˜๋‚˜์˜ ์„ฑ๋ถ„์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ทธ๊ฑธ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฑฐ๋‹ค.
  • 3์ฐจ์› ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ผ๋•Œ๋Š” x,y,z ๊ทธ๋ฆฌ๊ณ  w๋ผ๋Š” ๊ฐ’์„ ์ถ”๊ฐ€๋กœ ์จ์ค€๋‹ค. ๊ทธ๋ƒฅ 1๋กœ ์จ์ฃผ๋ฉด ๋œ๋‹ค.

1.2.1. ์ž„์˜์˜ ์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „์ด๋™ ํ•˜๊ธฐ(ํ—‰ ์ด๊ฒƒ์€ ์ˆ˜์น˜ํ•ด์„ ์‹œํ—˜๋ฌธ์ œ?)

  • ํšŒ์ „์ถ•์ด ์›์ ์„ ์ง€๋‚˜๊ฒŒ ํ‰ํ–‰์ด๋™ ์‹œํ‚จ๋‹ค.
  • ํšŒ์ „์ถ•์ด xzํ‰๋ฉด๊ณผ ๋งŒ๋‚˜๋„๋ก x์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „์ด๋™ ์‹œํ‚จ๋‹ค.
  • ํšŒ์ „์ถ•์ด z์ถ•๊ณผ ์ผ์น˜ํ•˜๊ฒŒ y์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „์ด๋™ ์‹œํ‚จ๋‹ค.
  • ์›ํ•˜๋Š” ๋งŒํผ z์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค.
  • ์œ„์˜ ์œ„์˜ ๊ฒƒ์˜ ์—ญ๋ณ€ํ™˜
  • ์œ„์˜ ์œ„์˜ ์œ„์˜ ๊ฒƒ์˜ ์—ญ๋ณ€ํ™˜
  • ์œ„์˜ ์œ„์˜ ์œ„์˜ ์œ„์˜ ๊ฒƒ์˜ ์—ญ๋ณ€ํ™˜
  • ์š” ํ–‰๋ ฌ๋“ค์„ ๋‹ค ๊ณฑํ•˜๋ฉด

~cpp 
 T(-x1, -y1, -z1) Rx(ฯ†) Ry(-ฮธ) Rz(ฮฑ) Ry(ฮธ) Rx(-ฯ†) T(x1, y1, z1)
 ์ ˆ๋ผ ๋ณต์žกํ•ด ๋ณด์ธ๋‹ค. ๊ทผ๋ฐ ์ง์ ‘ ์†์œผ๋กœ ๋”ฐ๋ผ ํ•ด๋ณด๋ฉด ๋ณ„๋ฃจ ์•ˆ ๋ณต์žกํ•˜๋‹ค.

1.3. ์œˆ๋„์šฐ์™€ ๋ทฐํฌํŠธ

  • ๋ทฐํฌํŠธ : ํ™”๋ฉด์ƒ์— ๋‚˜ํƒ€๋‚ผ ๋ถ€๋ถ„์„ ๊ฐ€๋ฅดํ‚ด
  • ์œˆ๋„์šฐ ์œ„์—์„œ x๊ฐ’์˜ ์ตœ์†Œ๊ฐ’์„ x(min), ์ตœ๋Œ€๊ฐ’์„ x(max), y๊ฐ’์˜ ์ตœ์†Œ๊ฐ’์„ y(min), ์ตœ๋Œ€๊ฐ’์„ y(max) ๋ผ ํ•˜์ž.
  • ๋ทฐํฌํŠธ์˜ ์‚ฌ๊ฐํ˜•์˜ ์ตœ์†Œ,์ตœ๋Œ€๊ฐ’์„ X(min), X(max), Y(min), Y(max) ๋ผ ํ•˜์ž.
  • ํ™•๋Œ€/์ฆ๊ฐ€๋Ÿ‰ ๊ตฌํ•˜๋Š” ๊ณต์‹
    • delx = (X(max) - X(min)) / (x(max) - x(min))
    • dely = (Y(max) - Y(min)) / (y(max) - y(min))
    • x(c) = (x(max) + x(min)) / 2
    • y(c) = (y(max) + y(min)) / 2
    • X(c) = (X(max) + X(min)) / 2
    • Y(c) = (Y(max) + Y(min)) / 2
    • c1 = X(c) - x(c) * delx
    • c2 = Y(c) - y(c) * dely

    • X = delx * x + c1
    • Y = dely * y + c2

1.4. Polygon Mesh ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ


1.4.1. ์กฐ๊ฑด

  • ๋ชจ๋“  ๋ฉด์€ ์ธ์ ‘ํ•ด์•ผ ํ•œ๋‹ค.
  • ํŠน์ •ํ•œ ๋‹ค๊ฐํ˜•์„ mesh ๋‚ด์—์„œ ์ฐพ์„์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋‹ค๊ฐํ˜•์„ ์ด๋ฃจ๋Š” ๋ชจ๋“  ๋ชจ์„œ๋ฆฌ๋Š” ์ •ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋‹ค๊ฐํ˜•๋“ค์„ ์ง์ ‘ ์ฐพ์„์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • mesh ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ดํ• ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

1.4.2. Explicit Polygons Mesh

  • ๊ผญ์ง€์ ์„ vertex table์— ์ €์žฅํ›„ ๋‹ค๊ฐํ˜•์„ ๊ผญ์ง€์ ์˜ ์—ฐ์†๋œ ์ˆœ์„œ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•
  • ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์„ ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ข€๋” ํŽธํ•˜๋‹ค.
  • ๋งŒ์•ฝ์— P1 ๋‹ค๊ฐํ˜•์„ ์ด๋ฃจ๋Š” Vertex๋“ค์„ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ ์ˆœ์œผ๋กœ v1,v3,v4,v6์ด๋ผ ํ•˜๋ฉด v1->v3->v4->v6 ์ด๋ ‡๊ฒŒ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.
  • ๋‹จ์ 
    • ๋ชจ๋“  ๋ชจ์„œ๋ฆฌ๊ฐ€ ๋‘๋ฒˆ์”ฉ ๊ทธ๋ ค์ง€๊ฒŒ ๋œ๋‹ค.
    • ์–ด๋–ค ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ๋‹ค๊ฐํ˜•์„ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
    • ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ์กธ๋ผ ๋А๋ฆฌ๋‹ค.

1.4.3. Explicit Edges Mesh

  • ์ด๊ฑด ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€๋Š”๊ตฐ. ๋‚˜์ค‘์—

2. 3์ฐจ์› ๊ทธ๋ž˜ํ”ฝ

2.1. 3์ฐจ์› ๊ทธ๋ž˜ํ”ฝ์ด๋ž€?

  • ์–ด๋–ค ๋ฌผ์ฒด๋ฅผ ์ง์„ ๊ณผ ๊ณก์„ ์˜ ์ง‘ํ•ฉ์ฒด๋กœ ํ‘œํ˜„ํ•œ ๋‹ค์Œ ํˆฌ์˜์„ ํ†ตํ•ด ํ…Œ๋‘๋ฆฌ๋ฅผ ํ‘œ์‹œํ•˜๋Š” 'Wire frame ๋ชจ๋ธ'
  • ์–ด๋–ค ๋ฌผ์ฒด๋ฅผ ๊ทธ๊ฒƒ์„ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ๋Š” ๋ฉด์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๋‹ค์Œ ์€์„ , ์€๋ฉด์ œ๊ฑฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ Shading ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€๋ฏธํ•˜์—ฌ ๋ณด๋‹ค ํ˜„์‹ค๊ฐ ์žˆ๊ฒŒ ๊ทธ ๋ฌผ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” 'Surfaced ๋ชจ๋ธ'
  • ์ˆ˜ํ•™์ ์ธ ๊ณ ์ฒด๋กœ ์–ด๋–ค ๋ฌผ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” 'Solid ๋ชจ๋ธ'
  • ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์  : ๊นŠ์ด๊ฐ ํ‘œํ˜„

2.1.1. ํˆฌ์˜

  • 3์ฐจ์›์„ 2์ฐจ์›์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ๋ฐฉ๋ฒ•
  • ํ‰ํ–‰ํˆฌ์˜ (Parallel projection, orthogonal projection) : ๋ฌผ์ฒด์˜ ๋ชจ๋“  ์ ์„ ํ™”๋ฉด์ƒ์— ํˆฌ์˜. ๊นŠ์ด๊ฐ...์€ ๋ณ„๋ฃจ๋‹ค.
  • ์›๊ทผํˆฌ์˜ (Perspective projection) : ์šฐ๋ฆฌ ๋ˆˆ์— ๋ณด์ด๋Š” ๋Œ€๋กœ(์›๊ทผ๊ฐ ์‚ด๋ ค์„œ) ๊นŠ์ด๊ฐ ์‚ด๋ฆฌ๋Š”๋ฐ ์ข‹๋‹ค.

2.1.2. ์€์„ /์€๋ฉด ์ œ๊ฑฐ

  • ๋ง๊ทธ๋Œ€๋กœ ์•ˆ๋ณด์ด๋Š” ๋ถ€๋ถ„ ์—†์• ๊ธฐ

2.1.3. ๋ฉด์˜ ์ƒ‰

  • ๊ด‘์› ๋ชจ๋ธ ์‚ฌ์šฉ(Ray-Tracing๋ฒ• ๋งŽ์ด ์‚ฌ์šฉ)

2.1.4. ๊ทธ๋ฆผ์ž

  • ์ ๊ด‘์› : ๊ณ„์‚ฐํ•˜๊ธด ์‰ฝ์ง€๋งŒ ํ˜„์‹ค๊ฐ ๋–จ์–ด์ง
  • ๋ถ„์‚ฐ๊ด‘์› : ๊ณ„์‚ฐํ•˜๊ธด ์–ด๋ ต์ง€๋งŒ ํ˜„์‹ค๊ฐ ์ข‹์Œ

2.2. ์‹œ๊ฐ๋ณ€ํ™˜๊ณผ ์›๊ทผํˆฌ์˜

  • ์‹ค์ขŒํ‘œ๊ณ„(Xw,Yw,Zw) -> ์‹œ๊ฐ์ขŒํ‘œ๊ณ„(Xe,Ye,Ze) -> ์Šคํฌ๋ฆฐ ์ขŒํ‘œ๊ณ„(X,Y)

2.2.1. ์‹œ๊ฐ๋ณ€ํ™˜

  • ์‹œ๊ฐ์ขŒํ‘œ๋Š” ์•ž์—์„œ ๋งํ–ˆ๋“ฏ์ด ๊ตฌ๋ฉด์ขŒํ‘œ๊ณ„๋ฅผ ์“ด๋‹ค.
  • Xe, Ye, Ze, 1 = Xw, Yw, Zw, 1 V : V๋Š” ์‹ค์ขŒํ‘œ๊ณ„๋ฅผ ์‹œ๊ฐ์ขŒํ‘œ๊ณ„๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ํ–‰๋ ฌ
  • ํ–‰๋ ฌ V ๊ตฌํ•˜๊ธฐ
    • ์‹ค์ขŒํ‘œ๊ณ„์˜ ์ค‘์‹ฌ O๋ฅผ ์‹œ์  E๋กœ ํ‰ํ–‰์ด๋™์‹œํ‚จ๋‹ค. T( -Xe, -Ye, -Ze )
    • y์ถ•์„ ์‹œ์„ ๋ฒกํ„ฐ์˜ xyํ‰๋ฉด์„ฑ๋ถ„์˜ ๋ฐฉํ–ฅ๊ณผ ์ผ์น˜์‹œ์ผœ์•ผ ํ•œ๋‹ค. Z์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ (ํŒŒ์ด/2-ฮธ) ํšŒ์ „ (ฮธ๋Š” x์ถ•๊ณผ์˜ ๊ฐ)
    • z์ถ•์ด ์‹œ์„ ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์ด ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ x์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ (ฯ†-ํŒŒ์ด) ํšŒ์ „ (ฯ†๋Š” z์ถ•๊ณผ์˜ ๊ฐ)
    • x์ถ•์˜ ๋ฑกํ–ฅ์„ ๋ฐ”๊พผ๋‹ค.
    • ๊ฒฐ๋ก (์ง€๊ธˆ ๋ณด๋‹ˆ๊น ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ๋Š” ํ–‰๋ ฌ์ด๋ž‘ ์ข€ ๋‹ค๋ฅด๋‹ค. ํ–‰๊ณผ ์—ด์ด ๋ฐ”๊ปด์žˆ๋‹ค.)

~cpp 
 V = T( -Xe, -Ye, -Ze) Rz(ํŒŒ์ด/2-ฮธ) Rx(ฯ†-ํŒŒ์ด) Myz
     | -sinฮธ  -cosฯ†cosฮธ  -sinฯ†cosฮธ  0 |
     | cosฮธ   -cosฯ†sinฮธ  -sinฯ†sinฮธ  0 |
   = | 0       sinฯ†      -cosฯ†      0 |
     | 0       0                      1 |

2.2.2. ์›๊ทผํˆฌ์˜

  • ๊ทธ๋ฆผ ๋ด์•ผ ์ดํ•ดํ• ์ˆ˜ ์žˆ๋Š”๋ฐ.. ๊ทธ๋ƒฅ ์‹๋งŒ ์จ๋ณด๋ฉด..
  • X = d*x/z + c1, Y = d*y/z + c2 (d๋Š” ์‹œ์ ๊ณผ ์Šคํฌ๋ฆฐ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ, ์Šคํฌ๋ฆฐ์˜ ๊ฐ€๋กœ 2c1, ์„ธ๋กœ 2c2)

3. ํ˜ผํ•ฉ(Blend)

  • ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์ด๊ณ  ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์•„๋„ ๋ณ„๋กœ ์ž์„ธํžˆ ์•ˆ๋‚˜์™”๊ธธ๋ž˜ ์ ์—ˆ์Œ.
  • ์›๋ณธ(source) : ์ƒˆ๋กœ ๊ทธ๋ ค์ง€๋Š” ํ”ฝ์…€
  • ๋Œ€์ƒ(destination) : ํ”„๋ ˆ์ž„ ๋ฒ„ํผ์— ์ด๋ฏธ ๊ทธ๋ ค์ ธ ์žˆ๋Š” ํ”ฝ์…€
  • ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ : glEnable(GL_BLEND), glBlendFunc(์›๋ณธ ํ”ฝ์…€์— ๋Œ€ํ•œ ๋ธ”๋žœ๋”ฉ ๊ณ„์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹, ๋Œ€์ƒ ํ”ฝ์…€์— ๋Œ€ํ•œ ๋ธ”๋žœ๋”ฉ ๊ณ„์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹)
์›๋ณธ(๋Œ€์ƒ) ํ˜ผํ•ฉ ํ•จ์ˆ˜๋“ค
  • ์›๋ณธ ํ”ฝ์…€์— ๋Œ€ํ•œ ๊ณ„์‚ฐ ๋ฐฉ์‹
๋ฐฉ์‹ ์„ค๋ช…
GL_ZERO ์›๋ณธ ์ƒ‰์ƒ์„ 0,0,0,0 ์œผ๋กœํ•œ๋‹ค
GL_ONE ์›๋ณธ ์ƒ‰์ƒ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค
GL_DST_COLOR ์›๋ณธ ์ƒ‰์ƒ๊ณผ ๋Œ€์ƒ ์ƒ‰์ƒ์„ ๊ณฑํ•œ๋‹ค
GL_ONE_MINUS_DST_COLOR ์›๋ณธ ์ƒ‰์ƒ๊ณผ ((1,1,1,1)-๋Œ€์ƒ ์ƒ‰์ƒ)์„ ๊ณฑํ•œ๋‹ค
GL_SRC_ALPHA ์›๋ณธ ์ƒ‰์ƒ์— ์›๋ณธ ์•ŒํŒŒ ๊ฐ’์„ ๊ณฑํ•œ๋‹ค
GL_ONE_MINUS_SRC_ALPHA ์›๋ณธ ์ƒ‰์ƒ์— (1-์›๋ณธ ์•ŒํŒŒ๊ฐ’)์„ ๊ณฑํ•œ๋‹ค
GL_DST_ALPHA ์›๋ณธ ์ƒ‰์ƒ์— ๋Œ€์ƒ ์•ŒํŒŒ ๊ฐ’์„ ๊ณฑํ•œ๋‹ค
GL_ONE_MINUS_DST_ALPHA ์›๋ณธ ์ƒ‰์ƒ์— ((1,1,1,1)-๋Œ€์ƒ ์ƒ‰์ƒ ์•ŒํŒŒ๊ฐ’)์„ ๊ณฑํ•œ๋‹ค
GL_SRC_ALPHA_SATURATE ์›๋ณธ ์ƒ‰์ƒ์— ์›๋ณธ์•ŒํŒŒ ๊ฐ’๊ณผ (1-๋Œ€์ƒ ์•ŒํŒŒ๊ฐ’)์ค‘ ์ž‘์€ ๊ฒƒ์„ ๊ณฑํ•œ๋‹ค
  • ๋Œ€์ƒ ํ”ฝ์…€์— ๋Œ€ํ•œ ๊ณ„์‚ฐ ๋ฐฉ์‹
๋ฐฉ์‹ ์„ค๋ช…
GL_ZERO ๋Œ€์ƒ ์ƒ‰์ƒ์„ 0,0,0,0 ์œผ๋กœํ•œ๋‹ค
GL_ONE ๋Œ€์ƒ ์ƒ‰์ƒ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค
GL_SRC_COLOR ๋Œ€์ƒ ์ƒ‰์ƒ๊ณผ ์›๋ณธ ์ƒ‰์ƒ์„ ๊ณฑํ•œ๋‹ค
GL_ONE_MINUS_SRC_COLOR ๋Œ€์ƒ ์ƒ‰์ƒ๊ณผ ((1,1,1,1)-์›๋ณธ ์ƒ‰์ƒ)์„ ๊ณฑํ•œ๋‹ค
GL_SRC_ALPHA ๋Œ€์ƒ ์ƒ‰์ƒ์— ์›๋ณธ ์•ŒํŒŒ ๊ฐ’์„ ๊ณฑํ•œ๋‹ค
GL_ONE_MINUS_SRC_ALPHA ๋Œ€์ƒ ์ƒ‰์ƒ์— (1-์›๋ณธ ์•ŒํŒŒ๊ฐ’)์„ ๊ณฑํ•œ๋‹ค
GL_DST_ALPHA ๋Œ€์ƒ ์ƒ‰์ƒ์— ๋Œ€์ƒ ์•ŒํŒŒ ๊ฐ’์„ ๊ณฑํ•œ๋‹ค
GL_ONE_MINUS_DST_ALPHA ๋Œ€์ƒ ์ƒ‰์ƒ์— ((1,1,1,1)-๋Œ€์ƒ ์ƒ‰์ƒ ์•ŒํŒŒ๊ฐ’)์„ ๊ณฑํ•œ๋‹ค
GL_SRC_ALPHA_SATURATE ๋Œ€์ƒ ์ƒ‰์ƒ์— ์›๋ณธ์•ŒํŒŒ ๊ฐ’๊ณผ (1-๋Œ€์ƒ ์•ŒํŒŒ๊ฐ’)์ค‘ ์ž‘์€ ๊ฒƒ์„ ๊ณฑํ•œ๋‹ค

4. TextureMapping

  • ํ…์Šค์ณ ๋งตํ•‘ํ•˜๋Š” ๊ณผ์ •

~cpp 
Define the LoadBMPfile(char *filename) function
declare GLuint tex[n]
declare AUX_RGBImageRec *texRec[n]
assign LoadBMPFile("filename.bmp") to each texRec[i]
glGenTextures(count,&tex[0])
glBindTexture(GL_TEXTURE_2D,tex[i])
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D,0,3,texRec[i]->sizeX
		,texRec[i]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE,texRec[i]->data);

if(texRec[i])
	if(texRec[i]->data) 
		free(texRec[i]->data);
	free(texRec[i]);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
Example of using the texturemapping
  glBindTexture(GL_TEXTURE_2D, tex[0]);
  DrawQuad(1,1,1,normal);




5. Thread

  • ๊ทธ๋ฆฌ์Šค ๋ฌธ์ž ์“ฐ๋Š”๋ฒ• ใ…Ž ๋ˆ„๋ฅด๊ณ  ํ•œ์žํ‚ค
  • ์›๋ฌธ์ž ใ…‡ ๋ˆ„๋ฅด๊ณ  ํ•œ์žํ‚ค
  • ใ…Š ๋ˆ„๋ฅด๊ณ  ํ•œ์žํ‚ค ์น˜๋ฉด ๋ถ„์ˆ˜ ์“ธ์ˆ˜ ์žˆ๋‹ค.
  • ใ„น ๋ˆ„๋ฅด๊ณ  ํ•œ์žํ‚ค ์น˜๋ฉด ๋‹จ์œ„๋„ ๋‚˜์˜จ๋‹ค.
3DGraphicsFoundation
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:14
Processing time 0.0102 sec