<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=3DGraphicsFoundationSummary</id>
	<title>3DGraphicsFoundationSummary - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=3DGraphicsFoundationSummary"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=3DGraphicsFoundationSummary&amp;action=history"/>
	<updated>2026-05-14T16:33:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=3DGraphicsFoundationSummary&amp;diff=83918&amp;oldid=prev</id>
		<title>Maintenance script: Repair pages found by live-compare batch 0001</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=3DGraphicsFoundationSummary&amp;diff=83918&amp;oldid=prev"/>
		<updated>2026-03-26T14:46:17Z</updated>

		<summary type="html">&lt;p&gt;Repair pages found by live-compare batch 0001&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:46, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l111&quot;&gt;Line 111:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 111:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 시각변환 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 시각변환 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 시각좌표는 앞에서 말했듯이 구면좌표계를 쓴다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 시각좌표는 앞에서 말했듯이 구면좌표계를 쓴다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;Xe, Ye, Ze, 1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;= &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;Xw, Yw, Zw, 1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;V : V는 실좌표계를 시각좌표계로 바꾸기 위한 행렬&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Xe, Ye, Ze, 1 = Xw, Yw, Zw, 1 V : V는 실좌표계를 시각좌표계로 바꾸기 위한 행렬&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 행렬 V 구하기&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 행렬 V 구하기&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 실좌표계의 중심 O를 시점 E로 평행이동시킨다. T( -Xe, -Ye, -Ze )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** 실좌표계의 중심 O를 시점 E로 평행이동시킨다. T( -Xe, -Ye, -Ze )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l204&quot;&gt;Line 204:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 204:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 텍스쳐 맵핑하는 과정&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 텍스쳐 맵핑하는 과정&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Define the LoadBMPfile(char *filename) function&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Define the LoadBMPfile(char *filename) function&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  declare GLuint tex&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;n&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  declare GLuint tex&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;n&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  declare AUX_RGBImageRec *texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;n&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  declare AUX_RGBImageRec *texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;n&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  assign LoadBMPFile(&amp;quot;filename.bmp&amp;quot;) to each texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  assign LoadBMPFile(&amp;quot;filename.bmp&amp;quot;) to each texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glGenTextures(count,&amp;amp;amp;tex&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;0&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glGenTextures(count,&amp;amp;amp;tex&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;0&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glBindTexture(GL_TEXTURE_2D,tex&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glBindTexture(GL_TEXTURE_2D,tex&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexImage2D(GL_TEXTURE_2D,0,3,texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;-&amp;amp;gt;sizeX&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexImage2D(GL_TEXTURE_2D,0,3,texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;-&amp;amp;gt;sizeX&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		,texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;-&amp;amp;gt;sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE,texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;-&amp;amp;gt;data);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		,texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;-&amp;amp;gt;sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE,texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;-&amp;amp;gt;data);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  if(texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  if(texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	if(texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;-&amp;amp;gt;data)  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	if(texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;-&amp;amp;gt;data)  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		free(texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;-&amp;amp;gt;data);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  		free(texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;-&amp;amp;gt;data);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	free(texRec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	free(texRec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glEnable(GL_TEXTURE_2D);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glEnable(GL_TEXTURE_2D);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Example of using the texturemapping&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Example of using the texturemapping&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    glBindTexture(GL_TEXTURE_2D, tex&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;0&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    glBindTexture(GL_TEXTURE_2D, tex&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;0&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    DrawQuad(1,1,1,normal);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    DrawQuad(1,1,1,normal);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l233&quot;&gt;Line 233:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 233:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ㄹ 누르고 한자키 치면 단위도 나온다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ㄹ 누르고 한자키 치면 단위도 나온다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[3DGraphicsFoundation]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[3DGraphicsFoundation]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=3DGraphicsFoundationSummary&amp;diff=26765&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=3DGraphicsFoundationSummary&amp;diff=26765&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= 제 1 장 그래픽 기초 이론 =&lt;br /&gt;
== 수학적 기초 이론 ==&lt;br /&gt;
=== 좌표계 ===&lt;br /&gt;
* 오른손 좌표계 : 우리가 수학책에서 많이 보던 그 좌표계다. 위아래가 Z, 앞뒤가 X, 좌우가 Y, 그래픽스에선 잘 안쓴다. &lt;br /&gt;
* 왼손 좌표계 : 공간개념 이해하기 쉽기 때문에 그래픽스에서 많이 사용한다. 앞뒤가 Z, 좌우가 X, 위아래가 Y &lt;br /&gt;
* 구면 좌표계 : 주로 시점을 표현할떄 잘 쓰인다. 원점에서부터의 거리 ρ, z축과의 각 θ, x축과의 각 φ 로 구성된다. 이걸 그림에 따라 풀어보면, &lt;br /&gt;
** x = ρsinθcosφ&lt;br /&gt;
** y = ρsinθsinφ &lt;br /&gt;
** z = ρcosθ&lt;br /&gt;
&lt;br /&gt;
=== 벡터 ===&lt;br /&gt;
* 뭐.. 별로 볼거 없다. 다 고등학교 때 했던 거다. 생소한거만 몇개 적어보면..&lt;br /&gt;
* 벡터 표현을.. 원문자로 해야겠다. 화살표 그릴라니까 열라 귀찮다.&lt;br /&gt;
* 외적은 ⓐXⓑ 이렇게 표현한다. 방향은 벡터 ⓐ에서 벡터ⓑ쪽으로 180도보다 작은 각으로 돌릴때 나사가 진행하는 방향이다. 이게 뭔 개소리냐--;&lt;br /&gt;
* 벡터의 크기 : |ⓐXⓑ| = |ⓐ||ⓑ|sinθ&lt;br /&gt;
* 외적의 성질 : 두 벡터와 동시에 수직인 벡터&lt;br /&gt;
&lt;br /&gt;
=== 행렬 ===&lt;br /&gt;
* 3X3의 행렬식&lt;br /&gt;
      | a1 b1 c1 |      | b2 c2 |      | b1 c1 |      | b1 c1 |&lt;br /&gt;
  D = | a2 b2 c2 | = a1 |       | - a2 |       | + a3 |       |&lt;br /&gt;
      | a3 b3 c3 |      | b3 c3 |      | b3 c3 |      | b2 c2 |&lt;br /&gt;
&lt;br /&gt;
* 벡터의 외적을 행렬로 표시하기(i,j,k는 각각 x,y,z방향의 단위벡터)&lt;br /&gt;
          | i   j   k  |&lt;br /&gt;
  ⓐXⓑ = | Xa  Ya  Za | &lt;br /&gt;
          | Xb  Yb  Zb |&lt;br /&gt;
&lt;br /&gt;
* 꼭지점 방향 판별? 이건 어따 쓰는 거지..&lt;br /&gt;
&lt;br /&gt;
== 동차 좌표계와 3차원 변환 행렬 ==&lt;br /&gt;
* 동차 좌표계? 그냥 알기 쉽게 말하자면, 평행이동을 일반적인 일차변환으로 나타내기가 불가능해서, 하나의 성분을 추가해서 그걸로 나타내는 거다.&lt;br /&gt;
* 3차원 좌표를 나타낼때는 x,y,z 그리고 w라는 값을 추가로 써준다. 그냥 1로 써주면 된다.&lt;br /&gt;
&lt;br /&gt;
=== 임의의 축을 중심으로 회전이동 하기(헉 이것은 수치해석 시험문제?) ===&lt;br /&gt;
* 회전축이 원점을 지나게 평행이동 시킨다.&lt;br /&gt;
* 회전축이 xz평면과 만나도록 x축을 중심으로 회전이동 시킨다.&lt;br /&gt;
* 회전축이 z축과 일치하게 y축을 중심으로 회전이동 시킨다.&lt;br /&gt;
* 원하는 만큼 z축을 중심으로 돌려준다.&lt;br /&gt;
* 위의 위의 것의 역변환&lt;br /&gt;
* 위의 위의 위의 것의 역변환&lt;br /&gt;
* 위의 위의 위의 위의 것의 역변환&lt;br /&gt;
* 요 행렬들을 다 곱하면&lt;br /&gt;
  T(-x1, -y1, -z1) Rx(φ) Ry(-θ) Rz(α) Ry(θ) Rx(-φ) T(x1, y1, z1)&lt;br /&gt;
  절라 복잡해 보인다. 근데 직접 손으로 따라 해보면 별루 안 복잡하다.&lt;br /&gt;
&lt;br /&gt;
== 윈도우와 뷰포트 ==&lt;br /&gt;
* 뷰포트 : 화면상에 나타낼 부분을 가르킴&lt;br /&gt;
* 윈도우 위에서 x값의 최소값을 x(min), 최대값을 x(max), y값의 최소값을 y(min), 최대값을 y(max) 라 하자.&lt;br /&gt;
* 뷰포트의 사각형의 최소,최대값을 X(min), X(max), Y(min), Y(max) 라 하자.&lt;br /&gt;
* 확대/증가량 구하는 공식&lt;br /&gt;
** delx = (X(max) - X(min)) / (x(max) - x(min))&lt;br /&gt;
** dely = (Y(max) - Y(min)) / (y(max) - y(min))&lt;br /&gt;
** x(c) = (x(max) + x(min)) / 2&lt;br /&gt;
** y(c) = (y(max) + y(min)) / 2&lt;br /&gt;
** X(c) = (X(max) + X(min)) / 2&lt;br /&gt;
** Y(c) = (Y(max) + Y(min)) / 2&lt;br /&gt;
** c1 = X(c) - x(c) * delx&lt;br /&gt;
** c2 = Y(c) - y(c) * dely&lt;br /&gt;
&lt;br /&gt;
** X = delx * x + c1&lt;br /&gt;
** Y = dely * y + c2&lt;br /&gt;
&lt;br /&gt;
== Polygon Mesh 데이터 구조 ==&lt;br /&gt;
&lt;br /&gt;
=== 조건 ===&lt;br /&gt;
* 모든 면은 인접해야 한다.&lt;br /&gt;
* 특정한 다각형을 mesh 내에서 찾을수 있어야 한다.&lt;br /&gt;
* 하나의 다각형을 이루는 모든 모서리는 정확하게 표현되어야 한다.&lt;br /&gt;
* 하나의 모서리를 공유하는 다각형들을 직접 찾을수 있어야 한다.&lt;br /&gt;
* mesh 전체를 바꾸거나 디스플레이할수 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== Explicit Polygons Mesh ===&lt;br /&gt;
* 꼭지점을 vertex table에 저장후 다각형을 꼭지점의 연속된 순서로 나타내는 방법&lt;br /&gt;
* 리스트와 배열을 쓸 수 있는데, 리스트가 좀더 편하다.&lt;br /&gt;
* 만약에 P1 다각형을 이루는 Vertex들을 반시계 방향 순으로 v1,v3,v4,v6이라 하면 v1-&amp;gt;v3-&amp;gt;v4-&amp;gt;v6 이렇게 가르키게 리스트를 구현하면 된다.&lt;br /&gt;
* 단점&lt;br /&gt;
** 모든 모서리가 두번씩 그려지게 된다.&lt;br /&gt;
** 어떤 모서리를 공유하고 있는 다각형을 찾기가 어렵다.&lt;br /&gt;
** 때문에 속도가 졸라 느리다.&lt;br /&gt;
&lt;br /&gt;
=== Explicit Edges Mesh ===&lt;br /&gt;
* 이건 잘 이해가 안가는군. 나중에&lt;br /&gt;
&lt;br /&gt;
= 3차원 그래픽 =&lt;br /&gt;
== 3차원 그래픽이란? ==&lt;br /&gt;
* 어떤 물체를 직선과 곡선의 집합체로 표현한 다음 투영을 통해 테두리를 표시하는 &amp;#039;Wire frame 모델&amp;#039;&lt;br /&gt;
* 어떤 물체를 그것을 둘러싸고 있는 면으로 나타낸 다음 은선, 은면제거 알고리즘이나 Shading 알고리즘을 가미하여 보다 현실감 있게 그 물체를 표현하는 &amp;#039;Surfaced 모델&amp;#039;&lt;br /&gt;
* 수학적인 고체로 어떤 물체를 표현하는 &amp;#039;Solid 모델&amp;#039;&lt;br /&gt;
* 가장 큰 문제점 : 깊이감 표현&lt;br /&gt;
&lt;br /&gt;
=== 투영 ===&lt;br /&gt;
* 3차원을 2차원으로 표현하는 가장 기초적인 방법&lt;br /&gt;
* 평행투영 (Parallel projection, orthogonal projection) : 물체의 모든 점을 화면상에 투영. 깊이감...은 별루다.&lt;br /&gt;
* 원근투영 (Perspective projection) : 우리 눈에 보이는 대로(원근감 살려서) 깊이감 살리는데 좋다.&lt;br /&gt;
&lt;br /&gt;
=== 은선/은면 제거 ===&lt;br /&gt;
* 말그대로 안보이는 부분 없애기&lt;br /&gt;
&lt;br /&gt;
=== 면의 색 ===&lt;br /&gt;
* 광원 모델 사용(Ray-Tracing법 많이 사용)&lt;br /&gt;
&lt;br /&gt;
=== 그림자 ===&lt;br /&gt;
* 점광원 : 계산하긴 쉽지만 현실감 떨어짐&lt;br /&gt;
* 분산광원 : 계산하긴 어렵지만 현실감 좋음&lt;br /&gt;
&lt;br /&gt;
== 시각변환과 원근투영 ==&lt;br /&gt;
* 실좌표계(Xw,Yw,Zw) -&amp;gt; 시각좌표계(Xe,Ye,Ze) -&amp;gt; 스크린 좌표계(X,Y)&lt;br /&gt;
=== 시각변환 ===&lt;br /&gt;
* 시각좌표는 앞에서 말했듯이 구면좌표계를 쓴다.&lt;br /&gt;
* [[Xe, Ye, Ze, 1]] = [[Xw, Yw, Zw, 1]] V : V는 실좌표계를 시각좌표계로 바꾸기 위한 행렬&lt;br /&gt;
* 행렬 V 구하기&lt;br /&gt;
** 실좌표계의 중심 O를 시점 E로 평행이동시킨다. T( -Xe, -Ye, -Ze )&lt;br /&gt;
** y축을 시선벡터의 xy평면성분의 방향과 일치시켜야 한다. Z축을 중심으로 (파이/2-θ) 회전 (θ는 x축과의 각)&lt;br /&gt;
** z축이 시선벡터의 방향이 되어야 하므로 x축을 중심으로 (φ-파이) 회전 (φ는 z축과의 각)&lt;br /&gt;
** x축의 뱡향을 바꾼다.&lt;br /&gt;
** 결론(지금 보니깐 우리가 일반적으로 쓰는 행렬이랑 좀 다르다. 행과 열이 바껴있다.)&lt;br /&gt;
  V = T( -Xe, -Ye, -Ze) Rz(파이/2-θ) Rx(φ-파이) Myz&lt;br /&gt;
      | -sinθ  -cosφcosθ  -sinφcosθ  0 |&lt;br /&gt;
      | cosθ   -cosφsinθ  -sinφsinθ  0 |&lt;br /&gt;
    = | 0       sinφ      -cosφ      0 |&lt;br /&gt;
      | 0       0                      1 |&lt;br /&gt;
&lt;br /&gt;
=== 원근투영 ===&lt;br /&gt;
* 그림 봐야 이해할수 있는데.. 그냥 식만 써보면..&lt;br /&gt;
* X = d*x/z + c1, Y = d*y/z + c2 (d는 시점과 스크린 사이의 거리, 스크린의 가로 2c1, 세로 2c2)&lt;br /&gt;
&lt;br /&gt;
= 혼합(Blend) =&lt;br /&gt;
* 헷갈렸던 부분이고 인터넷에서 찾아도 별로 자세히 안나왔길래 적었음.&lt;br /&gt;
* 원본(source) : 새로 그려지는 픽셀&lt;br /&gt;
* 대상(destination) : 프레임 버퍼에 이미 그려져 있는 픽셀&lt;br /&gt;
* 사용하는 함수 : glEnable(GL_BLEND), glBlendFunc(원본 픽셀에 대한 블랜딩 계수를 계산하는 방식, 대상 픽셀에 대한 블랜딩 계수를 계산하는 방식)&lt;br /&gt;
원본(대상) 혼합 함수들&lt;br /&gt;
* 원본 픽셀에 대한 계산 방식&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 방식&lt;br /&gt;
| 설명&lt;br /&gt;
|-&lt;br /&gt;
| GL_ZERO&lt;br /&gt;
| 원본 색상을 0,0,0,0 으로한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE&lt;br /&gt;
| 원본 색상을 그대로 사용한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_DST_COLOR&lt;br /&gt;
| 원본 색상과 대상 색상을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE_MINUS_DST_COLOR&lt;br /&gt;
| 원본 색상과 ((1,1,1,1)-대상 색상)을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_SRC_ALPHA&lt;br /&gt;
| 원본 색상에 원본 알파 값을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
| 원본 색상에 (1-원본 알파값)을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_DST_ALPHA&lt;br /&gt;
| 원본 색상에 대상 알파 값을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE_MINUS_DST_ALPHA&lt;br /&gt;
| 원본 색상에 ((1,1,1,1)-대상 색상 알파값)을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_SRC_ALPHA_SATURATE&lt;br /&gt;
| 원본 색상에 원본알파 값과 (1-대상 알파값)중 작은 것을 곱한다&lt;br /&gt;
|}&lt;br /&gt;
* 대상 픽셀에 대한 계산 방식&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 방식&lt;br /&gt;
| 설명&lt;br /&gt;
|-&lt;br /&gt;
| GL_ZERO&lt;br /&gt;
| 대상 색상을 0,0,0,0 으로한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE&lt;br /&gt;
| 대상 색상을 그대로 사용한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_SRC_COLOR&lt;br /&gt;
| 대상 색상과 원본 색상을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE_MINUS_SRC_COLOR&lt;br /&gt;
| 대상 색상과 ((1,1,1,1)-원본 색상)을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_SRC_ALPHA&lt;br /&gt;
| 대상 색상에 원본 알파 값을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
| 대상 색상에 (1-원본 알파값)을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_DST_ALPHA&lt;br /&gt;
| 대상 색상에 대상 알파 값을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_ONE_MINUS_DST_ALPHA&lt;br /&gt;
| 대상 색상에 ((1,1,1,1)-대상 색상 알파값)을 곱한다&lt;br /&gt;
|-&lt;br /&gt;
| GL_SRC_ALPHA_SATURATE&lt;br /&gt;
| 대상 색상에 원본알파 값과 (1-대상 알파값)중 작은 것을 곱한다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= TextureMapping =&lt;br /&gt;
* 텍스쳐 맵핑하는 과정&lt;br /&gt;
 Define the LoadBMPfile(char *filename) function&lt;br /&gt;
 declare GLuint tex[n]&lt;br /&gt;
 declare AUX_RGBImageRec *texRec[n]&lt;br /&gt;
 assign LoadBMPFile(&amp;quot;filename.bmp&amp;quot;) to each texRec[i]&lt;br /&gt;
 glGenTextures(count,&amp;amp;amp;tex[0])&lt;br /&gt;
 glBindTexture(GL_TEXTURE_2D,tex[i])&lt;br /&gt;
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);&lt;br /&gt;
 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);&lt;br /&gt;
 glTexImage2D(GL_TEXTURE_2D,0,3,texRec[i]-&amp;amp;gt;sizeX&lt;br /&gt;
 		,texRec[i]-&amp;amp;gt;sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE,texRec[i]-&amp;amp;gt;data);&lt;br /&gt;
 &lt;br /&gt;
 if(texRec[i])&lt;br /&gt;
 	if(texRec[i]-&amp;amp;gt;data) &lt;br /&gt;
 		free(texRec[i]-&amp;amp;gt;data);&lt;br /&gt;
 	free(texRec[i]);&lt;br /&gt;
 glEnable(GL_TEXTURE_2D);&lt;br /&gt;
 glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);&lt;br /&gt;
 Example of using the texturemapping&lt;br /&gt;
   glBindTexture(GL_TEXTURE_2D, tex[0]);&lt;br /&gt;
   DrawQuad(1,1,1,normal);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
= Thread =&lt;br /&gt;
* 그리스 문자 쓰는법 ㅎ 누르고 한자키&lt;br /&gt;
* 원문자 ㅇ 누르고 한자키&lt;br /&gt;
* ㅊ 누르고 한자키 치면 분수 쓸수 있다.&lt;br /&gt;
* ㄹ 누르고 한자키 치면 단위도 나온다.&lt;br /&gt;
[[3DGraphicsFoundation]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>