๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Graphic

OpenGL๋กœ ๋ฐฐ์šฐ๋Š” 3์ฐจ์› ์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ์Šค::5์žฅ&์—ฐ์Šต๋ฌธ์ œ

by ๋„์บ๋ฆฌ๐Ÿฑ 2020. 7. 20.
๋ฐ˜์‘ํ˜•

โ— 5์žฅ ์—ฐ์Šต๋ฌธ์ œ

1. ์ „๊ธฐ ํŒจ๋„์— ์˜ํ•œ ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ์—์„œ๋Š” ํ™”๋ฉด ํ‘œ๋ฉด์˜ ๋ง‰์„ ์„ธ๊ฒŒ ๋ˆ„๋ฅด์ง€ ์•Š์•„๋„ ์œ„์น˜๊ฐ€ ๊ฐ์ง€๋œ๋‹ค. (True / False)

→ ๊ด‘ํ•™ ํŒจ๋„์€ ๋น›์„ ์†๊ฐ€๋ฝ์ด ๊ฐ€๋ฆฌ๋ฉด ๋ˆ„๋ฅธ ๊ฑธ๋กœ ๊ฐ์ง€๋ฅผ ํ•˜์ง€๋งŒ ์ „๊ธฐ ํŒจ๋„์€ ๋ง‰์ด ๋ˆŒ๋ฆฌ๊ณ  ๋‹ฟ๋Š” ๊ฒƒ์— ์˜ํ•ด์„œ ์œ„์น˜๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™”๋ฉด์˜ ๋ง‰์„ ์„ธ๊ฒŒ ๋ˆŒ๋Ÿฌ์•ผ ํ•œ๋‹ค. 

2. ์ž…๋ ฅ ์žฅ์น˜์˜ ์„ ํƒ์— ๊ด€ํ•œ ํ•œ ๋ฆฌํ€˜์ŠคํŠธ ๋ชจ๋“œ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ๋„๊ถŒ์„ ์ฅ”๋‹ค. (True / False)

→์ด๋ฒคํŠธ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ์žฅ์น˜ ์„ ํƒ์— ์ฃผ๋„๊ถŒ์„ ์ฅ˜ ์ˆ˜ ์žˆ๋‹ค.

3. ์ง€์—˜์—์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์„œ๋กœ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋œ๋‹ค. (True / False)

→ ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ์‹œ, ํ•ด๋‹น ์ด๋ฒคํŠธ ์ฝœ๋ฐฑํ•จ์ˆ˜์— ๋“ฑ๋ก๋œ ๊ฒƒ์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ž„์œผ๋กœ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์ƒ๊ด€ ์—†๋‹ค. 

4. ์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์‚ฌ์ด์— ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. (True / False)

์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ „์—ญ ๋ณ€์ˆ˜์˜ ํ˜•ํƒœ๋กœ ๊ณต์œ ํ•œ๋‹ค.

5. ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์˜ ํ™”๋ฉด ์ขŒํ‘œ๊ณ„์™€ GLUT ํ™”๋ฉด ์ขŒํ‘œ๊ณ„๋Š” ์™„์ „ํžˆ ์ผ์น˜ํ•œ๋‹ค .(True / False)

→์œˆ๋„์šฐ์™€ GLUT๋Š” ์ขŒ์ƒ๋‹จ ์›์ , GL์€ ์ขŒํ•˜๋‹จ ์›์ 

6. ํ•˜๋‚˜์˜ ๋ทฐ ํฌํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์œˆ๋„์šฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. (True / False)

→ ๋ฐ˜๋Œ€๋กœ, ํ•˜๋‚˜์˜ ์œˆ๋„์šฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ทฐํฌํŠธ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. 

7. ์™œ๊ณก์ด ์ผ์–ด๋‚˜๋Š” ์ด์œ ๋Š” ํ™”๋ฉด์˜ ์ข…ํšก๋น„๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (True / False)

8. ์œˆ๋„์šฐ ๋‚ด๋ถ€ ๋ฐฐ๊ฒฝํ™”๋ฉด์„ ํ‘์ƒ‰์œผ๋กœ ์ฑ„์šฐ๋Š” ํ•จ์ˆ˜๋Š” glClearColor(0.0, 0.0, 0.0, 1.0)์ด๋‹ค. (True / False)

→glClearColor์€ ํ˜„์žฌ ํ”„๋ ˆ์ž„์„ ์ฑ„์šธ ์ƒ‰์ƒ์„ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜๋กœ R,G,B,A ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค. glClear ํ˜ธ์ถœ ์ „์— glClearCOlor ๋ฅผ ํ˜ธ์ถœํ•ด ๋ฐฐ๊ฒฝ์ƒ‰์ƒ์„ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค.

9. glViewport ํ•จ์ˆ˜์— ์˜ํ•ด ๋ทฐ ํฌํŠธ๋ฅผ ๋ณ„๋„๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ทฐ ํฌํŠธ๋Š” ํ•ญ์ƒ ์ž๋™์ ์œผ๋กœ ํ˜„์žฌ ์œˆ๋„์šฐ์™€ ์ผ์น˜ํ•œ๋‹ค. (True / False)

 

10. glutDisplayFunc( )์€ ์žฅ๋ฉด์„ ๋””์Šคํ”Œ๋ ˆ์ดํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ์ค‘ ์–ธ์ œ๋ผ๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋‹ค. (True / False)

์ด ํ•จ์ˆ˜๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํ•จ์ˆ˜์ด๊ณ . ๋””์Šคํ”Œ๋ ˆ์ด ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ˜ธ์ถœํ•œ๋‹ค.

 

11. ๋ณด๋ฅ˜ ๋ชจ๋“œ์—์„œ๋Š” ๋ฌผ์ฒด๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆผ๊ณผ ๋™์‹œ์— ๋ฌผ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํŒŒ๊ธฐํ•ด ๋ฒ„๋ฆฐ๋‹ค.  (True / False)

์ง์ ‘ ๋ชจ๋“œ์™€ ๋ณด๋ฅ˜ ๋ชจ๋“œ ์ค‘ ์œ„์˜ ์„ค๋ช…์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€ ์ง์ ‘๋ชจ๋“œ.

 

12. ๋””์Šคํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ์— ๋ช…๋ น์–ด๋Š” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค. (True / False)

13. ์˜ค๋ฅธ์† ๋ฒ•์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์„œ๋Œ€๋กœ ์ •์ ์„ ๋‚˜์—ดํ•  ๋•Œ ์‹œ์ ์€ ์—„์ง€์†๊ฐ€๋ฝ ๋ฐฉํ–ฅ์— ์กด์žฌํ•œ๋‹ค. (True / False)

14. ์ŠคํŽ˜์ด์Šค ๋ณผ์€ ์ž์œ ๋„๊ฐ€ ( 6 )์ธ ์žฅ์น˜์ด๋‹ค. 

15. ๋น›์˜ ์„ธ๊ธฐ๋ฅผ ์ „๊ธฐ ์‹ ํ˜ธ๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ์นด๋ฉ”๋ผ ์†Œ์ž๋ฅผ  ( CCD )์ด๋ผ ํ•œ๋‹ค.

16. ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์  ์ž…๋ ฅ ์žฅ์น˜๋ฅผ ( ๋ฉ”๋‰ด์„ ํƒ์ž…๋ ฅ๊ธฐ_choice )์ด๋ผํ•œ๋‹ค.

17. ๋ฌผ์ฒด๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์  ์ž…๋ ฅ ์žฅ์น˜๋ฅผ ( ๋ฌผ์ฒด์„ ํƒ์ž…๋ ฅ๊ธฐ_pick )์ด๋ผํ•œ๋‹ค.

18. ์ž…๋ ฅ ์žฅ์น˜๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฐ’์„ ( ๋ฉ”์ €_measure )์ด๋ผ ํ•œ๋‹ค.

19. ํ˜„์žฌ ๋“ค์–ด์™€ ์žˆ๋Š” ๋ฉ”์ €๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐ€๋Š” ์ž…๋ ฅ ๋ชจ๋“œ๋Š” ( ์ƒ˜ํ”Œ ๋ชจ๋“œ )์ด๋‹ค.

20. ์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋กœ ์ง„์ž…ํ•˜๋ผ๋Š” ๋ช…๋ น์–ด๋Š”  ( glutMainLoop( ) )์ด๋‹ค. 

21. ์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋Š”  ( GLUT )์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์˜ํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

22. ์œˆ๋„์šฐ ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ( glutReshapeFunc() )์ฝœ๋ฐฑ์ด๋‹ค.

23. ํ™”๋ฉด์— ๋ณด์ด๊ณ ์ž ํ•˜๋Š” ๋ฌผ์ฒด์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•œ ๋ถ€ํ”ผ๋ฅผ ( ๊ฐ€์‹œ ๋ถ€ํ”ผ )๋ผ๊ณ  ํ•œ๋‹ค.

24. ์‚ฌ๊ฐํ˜•์„ ๊ทธ๋ฆด ๋•Œ ์ขŒ์ƒ๋‹จ์— ๋งˆ์šฐ์Šค ํด๋ฆญํ•˜๊ณ  ์ด์–ด ๋งˆ์šฐ์Šค๋ฅผ ์šฐํ•˜๋‹จ์œผ๋กœ ๋Œ์–ด๋‚ด๋ฆฌ๋Š” ๋„์ค‘์— ์‚ฌ๊ฐํ˜•์˜ ํฌ๊ธฐ๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค. ์ด๋ฅผ  ( ๋Ÿฌ๋ฒ„ ๋ฐด๋”ฉ )์ด๋ผ ํ•œ๋‹ค.

25. ์ด๋ฒคํŠธ ํ์— ์•„๋ฌด๋Ÿฐ ์ด๋ฒคํŠธ๊ฐ€ ์—†์„ ๋•Œ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” (์•„์ด๋“ค _ Idle )์ฝœ๋ฐฑ์ด๋‹ค. 

26. ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋Š” ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋™์‹œ์— ์–‘์ชฝ์—์„œ ์ง„ํ–‰๋˜๋Š”  ( ์ด์ค‘ )ํฌํŠธ ๋ฉ”๋ชจ๋ฆฌ๋‹ค.

27. ๋”๋ธ” ๋ฒ„ํผ๋ง์„ ์‚ฌ์šฉํ•  ๋•Œ ํ˜„์žฌ ์“ฐ๊ธฐ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๋ฒ„ํผ๋Š” ( ๋ฐฑ )๋ฒ„ํผ๋‹ค.

28. ์ •์ ์˜ ๊ตฌ์ฒด์  ์ขŒํ‘œ ๋Œ€์‹  ์ •์  ์•„์ด๋””๋งŒ์„ ๋‚˜์—ดํ•œ ๋ชฉ๋ก์„  ( ์ •์  ๋ฆฌ์ŠคํŠธ ๋˜๋Š” ์ •์  ๋ฐฐ์—ด )์ด๋ผ ํ•œ๋‹ค.

29. ํ•ด์ƒ๋„ 1024*768์„ ๊ธฐ์ค€์œผ๋กœ ํ•  ๋•Œ ์ง€์—˜์˜ ํ™”๋ฉด ์ขŒํ‘œ (200,400)์€ GLUT ํ™”๋ฉด ์ขŒํ‘œ ( 200, 368 367  )์ด๋‹ค.

30. ์ด ์žฅ์— ์ œ์‹œ๋œ ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋˜, ์ฝ”๋“œ ์ผ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฐœํ‘œํ•ด๋ณด๋ผ.

31. ๋‹ค์Œ 3๊ฐœ์˜ ๋ช…๋ น์–ด๊ฐ€ ๊ฐ€ํ•ด์งˆ ๊ฒฝ์šฐ ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” ์œˆ๋„์šฐ์˜ ์ •ํ™•ํ•œ ์œ„์น˜, ํฌ๊ธฐ, ๋ชจ์Šต์„ ๊ทธ๋ ค๋ณด๋ผ.

glutInitWindowPosition(80,30);

glutWindowSize(200,100);

glutCreateWindow("My Window");

 

 

โ— 5์žฅ ๋‚ด์šฉ์ •๋ฆฌ

 

01) ๊ทธ๋ž˜ํ”ฝ ์ž…๋ ฅ ์žฅ์น˜

- ๋ฌผ๋ฆฌ์  ์ž…๋ ฅ ์žฅ์น˜

  : ์ƒ๋Œ€์ž…๋ ฅ๊ณผ ์ ˆ๋Œ€์ž…๋ ฅ์— ์˜ํ•ด ๊ตฌ๋ถ„. ์ƒ๋Œ€์ž…๋ ฅ์žฅ์น˜์—์„œ๋Š” ์ž…๋ ฅ ์œ„์น˜์˜ ๋ณ€ํ™”๋Ÿ‰ ์ž…๋ ฅ, ์ด์ „ ์œ„์น˜์— ๋ณ€ํ™”๋Ÿ‰์„ ๋”ํ•˜์—ฌ ์ ˆ๋Œ€ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ์šด์˜์ฒด์ œ์˜ ๋ชซ. ์ ˆ๋Œ€์ž…๋ ฅ์žฅ์น˜์—๋Š” ์ ˆ๋Œ€์ ์ธ ์ž…๋ ฅ ์œ„์น˜๊ฐ€ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅ.

 

(๋””์ง€ํƒ€์ด์ง•: ์ปดํ“จํ„ฐ๊ฐ€ ๊ทธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””์ง€ํ„ธ ์ •๋ณด๋กœ ๋ฐ”๊พผ๋‹ค๋Š” ์˜๋ฏธ)

(ํŽœ๋ชจ์–‘์˜ ์ž…๋ ฅ ์žฅ์น˜ = ์Šคํƒ€์ผ๋Ÿฌ์Šค : ํŽœ์„ ์›€์ง์ด๋Š” ๋™์•ˆ ๋ชจ๋“  ์ขŒํ‘œ๊ฐ€ ์ž…๋ ฅ. ↔ ํƒœ๋ธ”๋ฆฟ์€ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์ˆœ๊ฐ„์˜ ์  ์ขŒํ‘œ๋งŒ ์ž…๋ ฅ)

(ํƒœ๋ธ”๋ฆฟ์—์„œ ํˆฌ๋ช…๋ง‰์˜ ์–ด๋””์— ๋‹ฟ๋Š๋ƒ์— ์ž…๋ ฅ ์ขŒํ‘œ์˜ ํ˜•ํƒœ๋กœ ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์—” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๊ด‘ํ•™ ํŒจ๋„์€ ๋ง‰์„ ๋ˆ„๋ฅด์ง€ ์•Š์•„๋„ ์œ„์น˜๊ฐ€ ๊ฐ์ง€๋œ๋‹ค. ์†๊ฐ€๋ฝ์ด ๋ˆ„๋ฅด๋ฉด ๋น›์ด ์ „๋‹ฌ๋˜์ง€ ์•Š์•„์„œ ์œ„์น˜๋ฅผ ๊ฐ์ง€ํ•œ๋‹ค. ์ „๊ธฐํŒจ๋„์€ ์™ธ๋ถ€ ๋ง‰์„ ๋ˆ„๋ฅด๋ฉด ๋ˆ„๋ฅธ ๊ณณ๋งŒ ๋‚ดํ”ผ์™€ ๋‹ฟ๊ณ  ์—ฌ๊ธฐ์„œ ์ „๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. )

 

- ๋…ผ๋ฆฌ์  ์ž…๋ ฅ ์žฅ์น˜

 : ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๋“ค์ด๋Š” ๋ฐ๋Š” ํ‚ค๋ณด๋“œ๋‚˜ ๋งˆ์šฐ์Šค ๋“ฑ์˜ ๋ฌผ๋ฆฌ์  ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ž˜ํ”ฝ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๋ฌผ๋ฆฌ์  ์žฅ์น˜์™€ ๋…ผ๋ฆฌ์  ์žฅ์น˜๋ฅผ ๊ตฌ๋ถ„ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ ๋‚ด์—์„œ ๋ฌผ๋ฆฌ์ ์ธ ์ž…๋ ฅ ์žฅ์น˜์˜ ์ข…๋ฅ˜๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๋Œ€์‹ ์—, ์ž…๋ ฅ ๊ธฐ๋Šฅ์— ๋ฐ”ํƒ•์„ ๋‘” ๋…ผ๋ฆฌ์  ์ž…๋ ฅ ์žฅ์น˜๋ฅผ ์ง€์ •ํ•˜๋„๋ก ํ•œ๋‹ค.

  • ์ขŒํ‘œ์ž…๋ ฅ๊ธฐ(Locator)

  • ์—ฐ์†์ขŒํ‘œ์ž…๋ ฅ๊ธฐ(Stroke)

  • ๋ฌธ์ž์—ด์ž…๋ ฅ๊ธฐ(String)

  • ์Šค์นผ๋ผ์ž…๋ ฅ๊ธฐ(Valuator)

  • ๋ฉ”๋‰ด์„ ํƒ์ž…๋ ฅ๊ธฐ(Choice)

  • ๋ฌผ์ฒด์„ ํƒ์ž…๋ ฅ๊ธฐ(Pick)

- ๋ฌผ์ฒด ์„ ํƒ

 : 1) ํด๋ฆญํ•œ ๊ณณ์—์„œ ๊ฐ€๊นŒ์šด ๋ฌผ์ฒด ์„ ํƒ                 2) ํด๋ฆญ ์œ„์น˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ”ฝ ์œˆ๋„์šฐ ๋ณด์—ฌ์คŒ

   3) ํด๋ฆญ๋œ ๋ถ€๋ถ„์— ์ค‘์ฒฉ๋œ ๋ชจ๋“  ๋ฌผ์ฒด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋ฉฐ ์‚ฌ์šฉ์ž ์„ ํƒ                4) ์„ ํƒ ๋ฌผ์ฒด๋ช… ํ‚ค๋ณด๋“œ ์ž…๋ ฅ

 

02) ์ž…๋ ฅ ๋ชจ๋“œ

 : ์ž…๋ ฅ์žฅ์น˜์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์— ์–ด๋–ค ๋ฐ”์—…์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉ์ด ์ผ์–ด๋‚˜๋Š”์ง€์— ๋”ฐ๋ผ ์ž…๋ ฅ ๋ชจ๋“œ๋ฅผ ๋‚˜๋ˆˆ๋‹ค. 

  • ๋ฉ”์ € : ์ž…๋ ฅ์žฅ์น˜๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋„˜๊ฒจ์ฃผ๋Š” ๊ฐ’
  • ํŠธ๋ฆฌ๊ฑฐ: ๋ฉ”์ €๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ผ๋Š” ์‹ ํ˜ธ
  • ๋ฉ”์ €ํ”„๋กœ์„ธ์Šค : ๋ฉ”์ ๋ฅผ ์ธ์‹ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ณผ์ • , ์ผ๋ฐ˜์ ์œผ๋กœ ์žฅ์น˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

→ ๋ฉ”์ € ํ”„๋กœ์„ธ์Šค์™€ ํŠธ๋ฆฌ๊ฑฐ์˜ ๊ด€๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ 3๊ฐ€์ง€ ์ž…๋ ฅ๋ชจ๋“œ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

1. ๋ฆฌํ€˜์ŠคํŠธ ๋ชจ๋“œ

: ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์— ๋ฉ”์ €๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ฐฉ์‹

2. ์ƒ˜ํ”Œ ๋ชจ๋“œ

: = ์ง์ ‘ ๋ชจ๋“œ, 

3. ์ด๋ฒคํŠธ ๋ชจ๋“œ

: ์œ„ ๋‘ ๋ชจ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ง€์ •ํ•œ ๋ฌผ๋ฆฌ์  ์žฅ์น˜ ์™ธ์˜ ์ž…๋ ฅ ์žฅ์น˜์˜ ์ž…๋ ฅ์ด ๋ฌด์‹œ๋œ๋‹ค. 

์ด๋ฒคํŠธ ๋ชจ๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ž…๋ ฅ ์žฅ์น˜๊ฐ€ ์šฐ์„ ๊ถŒ์„ ์ฅ”๋‹ค. ์•„๋ฌด๋•Œ๋‚˜ ์ž„์˜๋กœ ์„ ํƒํ•œ ์ž…๋ ฅ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋žจ์€ ์ด๋Ÿฌํ•œ ์š”๊ตฌ์— ๋งž์ถ”์–ด ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰.

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

์ด๋ฒคํŠธ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์ด๋ฒคํŠธ ๊ตฌ๋™ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค.

์ด๋ฒคํŠธ ํƒ€์ž…๋ณ„๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋‚ด์šฉ์„ ํ•จ์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค.

์ฒ˜์Œ ์ž…๋ ฅ ์žฅ์น˜ ์ดˆ๊ธฐํ™” ์ดํ›„, ๋ชจ๋“  ์ด๋ฒคํŠธ๋Š” ๋ฃจํ”„ ๋ฌธ(loop structure)์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค. ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๊ฐ€ ํ์— ๋“ค์–ด์™”๋Š”์ง€๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค.

 

03) ์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ˆ

: ์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ์€ ์œˆ๋„์šฐ ๊ธฐ๋Šฅ ๋ฐ ์ž…์ถœ๋ ฅ ์ œ์–ด์— ์žˆ์–ด์„œ GLUT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฏํ•œ๋‹ค.

์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ GLUT๋Š” ์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋“œ๋ผ์ด๋ฒ„ ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•œ๋‹ค.

GLUT๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋“ฑ๋กํ•œ ํ•จ์ˆ˜๋ฅผ ์ฝœ๋ฐฑ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅํ•œ๋‹ค.

 

  • ๋””์Šคํ”Œ๋ ˆ์ด ์ด๋ฒคํŠธ - ๋ Œ๋”๋ง์„ ์œ„ํ•œ ์ด๋ฒคํŠธ - ์ง€์—˜์˜ ๋ชจ๋“  ๋ Œ๋”๋ง ๋ช…๋ น์€ ๋Œ€๋ถ€๋ถ„ ๋””์Šคํ”Œ๋ ˆ์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์ •์˜๋œ๋‹ค.
  • ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ - ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๊ฑฐ๋‚˜ ๋–ผ์—ˆ์„ ๋•Œ ํŠธ๋ฆฌ๊ฑฐ ๋œ๋‹ค.
  • ๋ฆฌ์…ฐ์ดํ”„ ์ด๋ฒคํŠธ - ์‚ฌ์šฉ์ž๊ฐ€ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ, ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ ํ‚ค๊ฐ€ ๋ˆŒ๋Ÿฌ์กŒ์„ ๋•Œ, ์•„์ด๋“ค ์ด๋ฒคํŠธ๋Š” ํ์— ์•„๋ฌด๋Ÿฐ ๋ช…๋ น์–ด ์—†์„ ๋•Œ ๊ฐ๊ฐ ํ˜ธ์ถœ

์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ GLUT ์ด๊ณ , GLUT๋Š” ์–ด๋–ค ์ˆœ๊ฐ„์— ๋‹จ ํ•˜๋‚˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋งŒ์„ ์‹คํ–‰ํ•œ๋‹ค.

 

04) ์œˆ๋„์šฐ์™€ ๋ทฐ ํฌํŠธ

์ง€์—˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ถ€ํ„ฐ ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๊ธฐ๊นŒ์ง€ ์ญ‰์ญ‰์ญ‰ ์ขŒํ‘œ ๋ณ€ํ™˜์„ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. ๊ทธ์ค‘, ์ •๊ทœ ์ขŒํ‘œ๊ณ„์™€ ํ™”๋ฉด ์ขŒํ‘œ๊ณ„๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๊ทธ๋ฆผ์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ๋‹จ๊ณ„์— ๊ด€์—ฌํ•œ๋‹ค. 

โ— ํ™”๋ฉด ์ขŒํ‘œ๊ณ„(SCS) = ์žฅ์น˜ ์ขŒํ‘œ๊ณ„(DCS) = ์œˆ๋„์šฐ ์ขŒํ‘œ๊ณ„ : ํ™”์†Œ ๋‹จ์œ„๋กœ ์ขŒํ‘œ๋ฅผ ํ‘œ์‹œ _ ์ขŒ์ƒ๋‹จ์›์  ์ขŒํ‘œ๊ณ„

์ •๊ทœ ์ขŒํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด์ƒ๋„์— ๋”ฐ๋ฅธ ์ขŒํ‘œ ๊ณ„์‚ฐ์ด ๋‹จ์ˆœํ™” ๋œ๋‹ค. 

- ๋ทฐํฌํŠธ : ์œˆ๋„์šฐ ๋‚ด๋ถ€์— ์„ค์ •ํ•œ ์ž‘์€ ์ฐฝ.

glutInit() ํ•จ์ˆ˜๋Š” glut ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ณ , ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์„ธ์…˜์„ ํ˜•์„ฑ. glut์˜ ํ™”๋ฉด ์ขŒํ‘œ๊ณ„๋Š” ์œˆ๋„์šฐ์˜ ํ™”๋ฉด ์ขŒํ‘œ๊ณ„๋ฅผ ๋”ฐ๋ฅธ๋‹ค.(์ขŒ์ƒ๋‹จ ์›์ )

glClear() ํ•จ์ˆ˜๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ฅผ ์ตœ๊ธฐํ™” ํ•˜๋ผ๋Š” ์˜๋ฏธ. 

glut๋Š” ์ขŒ์ƒ๋‹จ์ด ์›์ ์ด์ง€๋งŒ gl์€ ์ขŒํ•˜๋‹จ์ด ์›์ ์ด๋‹ค.

 

05) ์ฝœ๋ฐฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

- Reshpae ์ฝœ๋ฐฑ

glut๋Š” ๋‹ค์Œ 3 ๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์— ๋ฆฌ์…ฐ์ดํ”„ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ( ์ฒ˜์Œ ์œˆ๋„์šฐ ์—ด ๋•Œ/ ์œˆ๋„์šฐ ์œ„์น˜๋ฅผ ์˜ฎ๊ธธ ๋•Œ/ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ๋•Œ) ์œˆ๋„์šฐ ํฌ๊ธฐ ์กฐ์ ˆ์— ๋”ฐ๋ฅธ ์™œ๊ณก์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด glOrtho() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์•ผํ•œ๋‹ค. 

glMatrixMode()๋Š” ํˆฌ์ƒ ํ–‰๋ ฌ์„ ๋ณ€ํ™˜๋Œ€์ƒ์œผ๋กœ ์„ค์ •ํ•˜๋ผ๋Š” ๋ช…๋ น์ด๋ฉฐ, glLoadIdentity()๋Š” ์ด ํ–‰๋ ฌ์— ์ผ๋‹จ ํ•ญ๋“ฑ ํ–‰๋ ฌ์„ ์‹ค์œผ๋ผ๋Š” ๋ช…๋ น์–ด. ์ด ๋‘ ๋ช…๋ น์ด ์„ ํ–‰๋˜์–ด์•ผ glOrtho() ํ•จ์ˆ˜์—์„œ ์ง€์ •ํ•œ ๊ฐ’์ด ํ•ด๋‹น ํ–‰๋ ฌ์— ๊ณฑํ•ด์ง„๋‹ค. 

๊ฐ€์‹œ๋ถ€ํ”ผ = ํ™”๋ฉด์— ๋ณด์ด๊ณ ์ž ํ•˜๋Š” ๋ฌผ์ฒด์˜ ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค. 

๊ฐ€์‹œ ๋ถ€ํ”ผ๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ glOrtho() ํ•จ์ˆ˜์˜ ํ”„๋กœํ† ํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

void glOrtho

( GLdouble left, GLdouble right, GLdouble bottom. GLdouble top, GLdouble near, GLdouble far);

ํˆฌ์ƒ ๋ฐฉ์‹์—์„œ ํˆฌ์ƒ๋ฉด์€ ๊ฐ€์‹œ ๋ถ€ํ”ผ์˜ ์ „๋ฐฉ ์ ˆ๋‹จ๋ฉด๊ณผ ๋™์ผ. glOrtho()์— ์˜ํ•ด ๊ฐ€์‹œ ๋ถ€ํ”ผ์˜ ๋ชจ์Šต์„ ์กฐ์ ˆํ•จ์œผ๋กœ์จ ์™œ๊ณก ํ•ด์†Œ ๊ฐ€๋Šฅ. -> ํˆฌ์ƒ๋ฉด ์ž์ฒด์˜ ์ข…ํšก๋น„๊ฐ€ ๋ทฐ ํฌํŠธ์˜ ์ข…ํšก๋น„๊ฐ€ ์ผ์น˜ํ•ด์„œ ๋ฌผ์ฒด๋Š” ์ „ํ˜€ ์™œ๊ณก๋˜์ง€ ์•Š๋Š”๋‹ค. 

- Mouse ์ฝœ๋ฐฑ

void glutMotionFunc(void(*func) (int x, int y));

void glutPassiveMotionFunc(void(*func) (int x, int y));

void glutEntryFunc(void(*func) (int state));

// glutPostRedisplay()ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜ ๊ฐ’์ด ๋ณ€๊ฒฝ ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ๋Œ ๋•Œ ๋ฐ˜๋“œ์‹œ ๋””์Šคํ”Œ๋ ˆ์ด ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ผ๋Š” ๊ฒƒ.

- Menu ์ฝœ๋ฐฑ

int glutCreateMenu(void(*func)(int value))

void glutSetMenu(int id)

void glutAddMenuEntry(char *name,int value);

int glutAttachMenu(int button)

void glutaddSubMenu(char *name, int menu);

- Idle ์ฝœ๋ฐฑ 

์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ๋Œ ๋•Œ๋งˆ๋‹ค GLUT๋Š” ํ์— ์Œ“์ธ ์ด๋ฒคํŠธ๋ฅผ ๊ฒ€์‚ฌํ•จ.

glClear()๋ฅผ ๊ธฐ์กด์˜ ์ปฌ๋Ÿฌ ๋ฒ„ํผ ๋‚ด์šฉ์„ ๋‹ค ์ง€์šฐ๋ผ๋Š” ์˜๋ฏธ๋กœ, ์ด๊ฒŒ ์—†๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์‚ฌ๊ฐํ˜•์ด ์ด์ „ ์‚ฌ๊ฐํ˜•์ด ์œ„์— ๊ฒน์ณ์„œ ๊ธฐ๋ก ๋˜๋ฏ€๋กœ ์›ํ•˜๋Š” ๋ฐ”๊ฐ€ ์•„๋‹ˆ๋‹ค.  = ๋Ÿฌ๋ฒ„ ๋ฐด๋”ฉ : ์ด์ „์˜ ๊ทธ๋ฆผ์„ ์ง€์šฐ๊ณ , ๋ฐฐ๊ฒฝ์ƒ‰์„ ๋‹ค์‹œ ์น ํ•˜๊ณ .

- Timer ์ฝœ๋ฐฑ

์ผ์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ด ์ง€๋‚˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ํƒ€์ด๋จธ ์ด๋ฒคํŠธ 

 

06) ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๋”๋ธ” ๋ฒ„ํผ๋ง

ํ”„๋ ˆ์ž„ ๋ฒ„ํผ๋ž‘ ์–‘์ชฝ์œผ๋กœ ์—ฐ๊ฒฐ๋œ 2์ค‘ ํฌํŠธ ๊ตฌ์กฐ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ”„๋ ˆ์ž„ ๋ฒ„ํผ์— ๋ฌผ์ฒด ์˜์ƒ์„ ์“ฐ๊ณ , ๋น„๋””์˜ค ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์“ฐ์ธ ๋‚ด์šฉ์„ ์ฝ์–ด์„œ ํ™”๋ฉด์— ๋ฟŒ๋ฆฐ๋‹ค. 

์ด ๋•Œ ๋‘ ๊ฐœ์˜ ์†๋„ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋น„๋””์˜ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ฝ๋Š” ์†๋„ >> ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์“ฐ๋Š” ์†๋„.

์ด๋กœ ์ธํ•ด ๊นœ๋นก๊ฑฐ๋ฆผ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ธฐ ์œ„ํ•ด  "๋”๋ธ” ๋ฒ„ํผ๋ง"์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

 

๋”๋ธ” ๋ฒ„ํผ๋ง์ด๋ž€, 2๊ฐœ์˜ ๋ฒ„ํผ๋ฅผ ์“ด๋‹ค. ํ”„๋ŸฐํŠธ ๋ฒ„ํผ์™€ ๋ฐฑ๋ฒ„ํผ์ด๋‹ค. ๋ฒ„ํผ๋“ค์€ ๊ฐ๊ฐ ์˜์ƒ ํ•˜๋‚˜๋ฅผ ์˜จ์ „ํžˆ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋‹ค. ๋น„๋””์˜ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ”„๋ŸฐํŠธ ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ์ฝ๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๋™์•ˆ ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋ฐฑ๋ฒ„ํผ์— ๋‚ด์šฉ์„ ์จ๊ฐ„๋‹ค. ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์“ฐ๊ธฐ๋ฅผ ๋งˆ์น˜๋ฉด ๋น„๋””์˜ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐฑ ๋ฒ„ํผ๋กœ ์Šค์œ„์นญ ํ•œ๋‹ค. 

๊ทธ๋ž˜์„œ ํ˜„์žฌ ๋น„๋””์˜ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ฝ๊ณ  ์žˆ๋Š” ๋ฒ„ํผ๋ฅผ ํ”„๋ŸฐํŠธ ๋ฒ„ํผ๋กœ, ๊ธฐ๋ก์ค‘์ธ ๋ฒ„ํผ๋ฅผ ๋ฐฑ ๋ฒ„ํผ๋กœ ์นญํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋”๋ธ” ๋ฒ„ํผ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ glutInitDisplayMode(GLUT_DOUBLE)์ด๋ผ๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์•ผํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  glutSwapBuffers() ํ•จ์ˆ˜๋Š” ํ”„๋ŸฐํŠธ ๋ฒ„ํผ์™€ ๋ฐฑ ๋ฒ„ํผ๋ฅผ ์Šค์œ„์นญ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ์ด ํ•จ์ˆ˜ ์‹คํ–‰์‹œ ๋ฌต์‹œ์ ์œผ๋กœ glFush() ์‹คํ–‰๋œ๋‹ค. ์ฆ‰ ์ด์ „์˜ ํ”„๋ŸฐํŠธ ๋ฒ„ํผ์— ๊ฐ€ํ•ด์งˆ ๋ช…๋ น์„ ๋ชจ๋‘ ์‹คํ–‰ํ•œ ํ›„์— ๋ฒ„ํผ ์Šค์œ„์นญ์ด ์ผ์–ด๋‚œ๋‹ค.

 

07) ์ •์  ๋ฐฐ์—ด

- ์˜ค๋ฅธ์† ๋ฒ•์น™์œผ๋กœ ๊ทธ๋ฆฐ๋‹ค.

 

08) ๋””์Šคํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ

 : ์ง€์—˜ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๋ชจ๋“œ๋Š” ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ๋ฐ”๋กœ ์ง์ ‘ ๋ชจ๋“œ์™€ ๋ณด๋ฅ˜ ๋ชจ๋“œ.

์ง์ ‘ ๋ชจ๋“œ๋Š” ๋ฌผ์ฒด๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆผ๊ณผ ๋™์‹œ์— ๋ฌผ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํŒŒ๊ธฐํ•ด ๋ฒ„๋ฆฐ๋‹ค. 

๋ณด๋ฅ˜ ๋ชจ๋“œ๋Š” ์ •์˜๋œ ๋ฌผ์ฒด ์ •๋ณด๋ฅผ ๊ทธ๋ž˜๋„ ์œ ์ง€ํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•œ๋‹ค. ์ง€์—˜์˜ ๋ณด๋ฅ˜ ๋ชจ๋“œ๋Š” ๋””์Šคํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ์— ์˜ํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

๋””์Šคํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ๋Š” ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์†๋„์™€ ์ง๊ฒฐ๋œ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€์—๋Š” ๊ธฐ๋ณธ ์š”์†Œ, ์ƒํƒœ ๋ณ€์ˆ˜, ์˜์ƒ์€ ๋ฌผ๋ก  ์ด๋™, ํšŒ์ „, ์กฐ๋ช… ์ž‘์—…๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ช…๋ น์„ ์ง‘์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ ๋˜์–ด์•ผ ํ•  ์ผ๋ จ์˜ ์ง€์—˜ ๋ช…๋ น์–ด๋ฅผ ๋””์Šคํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€์— ํฌํ•จ์‹œํ‚ด์œผ๋กœ์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ๊ฐ„์€ ๋นจ๋ผ์ง„๋‹ค. 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€