iPhone3D¹ÖºÂ1²ó
¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¤·¤ÆºîÀ®
[
¥È¥Ã¥×
] [
¿·µ¬
|
°ìÍ÷
|
ñ¸ì¸¡º÷
|
ºÇ½ª¹¹¿·
|
¥Ø¥ë¥×
]
³«»Ï¹Ô:
º£²ó¤ÏiPhone¤Ç¤ÎOpenGLES2¤Î½é´ü²½¤ò¤·¤Þ¤¹¡£
&ref(screenshot1.PNG);
º£²ó¤Î¥×¥í¥°¥é¥à°ì¼°¤Ï¤³¤Á¤é
¡¦&ref(OpenGLES2Initialize.zip);
OpenGLES¤ò»È¤¦¤¿¤á¤Ë¤Ï
°Ê²¼¤Îframework¤¬É¬ÍפǤ¹¤Î¤Ç¥×¥í¥¸¥§¥¯¥È¤ËÄɲä·¤Þ¤¹¡£
¡¦OpenGLES.framework
¡¦QuartzCore.framework
&ref(framework.png);
¶ñÂÎŪ¤Ê½é´ü²½½èÍý¤Ï
OpenGLView.m¤Ë¼ÂÁõ¤·¤Æ¤¢¤ê¤Þ¤¹
¤Û¤Ü·è¤Þ¤ê¤¤Ã¤¿¼ê½ç¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¤Î¤Ç¼¡²ó°Ê¹ß¤â»È¤¤²ó...
°Ê²¼¤Îή¤ì¤È¤Ê¤ê¤Þ¤¹¡£
¡¦¡CAEAGLLayer¥¯¥é¥¹¤ò¥ì¥¤¥ä¡¼¤ËÀßÄê
¡¦¢ÉÁ²è¥ì¥¤¥ä¡¼¤òȾƩÌÀ²½
¡¦£OpenGL¥³¥ó¥Æ¥¥¹¥È¤ÎºîÀ®
¡¦¤¥«¥é¡¼¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
¡¦¥Z¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
¡¦¦¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
¡¦§Äê´üŪ¤Ë¥ì¥ó¥À¥ê¥ó¥°½èÍý¤ò¸Æ¤Ó½Ð¤·
´ðËÜŪ¤Ë§¤ÇOpenGLView¥¯¥é¥¹¤Îrender¥á¥½¥Ã¥É¤òÄê´üŪ¤Ë¸Æ¤Ó...
¼¡²ó°Ê¹ß¤ÏOpenGLView¥¯¥é¥¹¤ò·Ñ¾µ¤·¡¢
render¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤ÆÉÁ²è½èÍýÉôʬ¤òÊѹ¹¤·¤Þ...
// ¡CAEAGLLayer¥¯¥é¥¹¤ò¥ì¥¤¥ä¡¼¤ËÀßÄê¡ÊOpenGL¥³¥ó¥Æ¥ó¥Ä...
+ (Class)layerClass {
return [CAEAGLLayer class];
}
// ¢ÉÁ²è¥ì¥¤¥ä¡¼¤òȾƩÌÀ²½¡Ê¥Ñ¥Õ¥¡¡¼¥Þ¥ó¥¹¤ÏȾƩÌÀ²½¤·¤¿...
- (void)setupLayer {
_eaglLayer = (CAEAGLLayer*) self.layer;
_eaglLayer.opaque = YES;
}
// £OpenGL¥³¥ó¥Æ¥¥¹¥È¤ÎºîÀ®
// ¥³¥ó¥Æ¥¥¹¥È¤ÏÉÁ²è¤ËɬÍפʾðÊó¤òÁ´¤Æ´ÉÍý¤·¤Æ¤¤¤ë
- (void)setupContext {
EAGLRenderingAPI api = kEAGLRenderingAPIOpenGLES2;
_context = [[EAGLContext alloc] initWithAPI:api];
if (!_context) {
NSLog(@"Failed to initialize OpenGLES 2.0 contex...
exit(1);
}
if (![EAGLContext setCurrentContext:_context]) {
NSLog(@"Failed to set current OpenGL context");
exit(1);
}
}
// ¤¥«¥é¡¼¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
- (void)setupRenderBuffer {
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ÎÀ¸À®
glGenRenderbuffers(1, &_colorRenderBuffer);
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ¥Ð¥¤¥ó¥É
glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffe...
// ÉÁ²è¥ì¥¤¥ä¡¼¤Ë¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤Î¥á¥â¥ê³ÎÊÝ
[_context renderbufferStorage:GL_RENDERBUFFER fromDra...
}
// ¥Z¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
- (void)setupDepthBuffer {
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ÎÀ¸À®
glGenRenderbuffers(1, &_depthRenderBuffer);
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ¥Ð¥¤¥ó¥É
glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderBuffe...
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ËZ¥Ð¥Ã¥Õ¥¡ÄɲÃ
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPO...
}
// ¦¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
- (void)setupFrameBuffer {
GLuint framebuffer;
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
glGenFramebuffers(1, &framebuffer);
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ¥Ð¥¤¥ó¥É
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤Ë¿§Â°À¤Î¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ò´ØÏ¢¤Å¤±
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_AT...
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤Ë¿¼ÅÙ°À¤Î¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ò´ØÏ¢...
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_AT...
}
// ÉÁ²è½èÍý
- (void)render:(CADisplayLink*)displayLink {
// ¥¹¥¯¥ê¡¼¥ó¤Î¥¯¥ê¥¢
glClearColor(0, 0, 0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Z¥Æ¥¹¥È͸ú
glEnable(GL_DEPTH_TEST);
// ¥«¥ê¥ó¥°Í¸ú
glEnable(GL_CULL_FACE);
//glDisable(GL_CULL_FACE);
glFrontFace(GL_CW);
//glFrontFace(GL_CCW);
// ¥À¥Ö¥ë¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°
[_context presentRenderbuffer:GL_RENDERBUFFER];
}
// §Äê´üŪ¤ËÉÁ²è½èÍý¤ò¸Æ¤Ó½Ð¤·
// render¥á¥½¥Ã¥É¤òÄê´üŪ¤Ë¸Æ¤Ó½Ð¤¹
// ¤³¤Î¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Ærender¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë
- (void)setupDisplayLink {
CADisplayLink* displayLink = [CADisplayLink displayLi...
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] ...
}
¼¡¡§iPhone3D¹ÖºÂ2²ó
|¤Ë¤ã¤ó¤Ñ¤¹¡¼|0|
|Á¡°ÝÁÓ¼º¡ª|0|
|²æ¤é¤¬¥º¥ô¥£¥º¥À¡¼¤Î¸÷¤ò¡¢¤¢¤Þ¤Í¤¯À¤³¦¤Ë|0|
½ªÎ»¹Ô:
º£²ó¤ÏiPhone¤Ç¤ÎOpenGLES2¤Î½é´ü²½¤ò¤·¤Þ¤¹¡£
&ref(screenshot1.PNG);
º£²ó¤Î¥×¥í¥°¥é¥à°ì¼°¤Ï¤³¤Á¤é
¡¦&ref(OpenGLES2Initialize.zip);
OpenGLES¤ò»È¤¦¤¿¤á¤Ë¤Ï
°Ê²¼¤Îframework¤¬É¬ÍפǤ¹¤Î¤Ç¥×¥í¥¸¥§¥¯¥È¤ËÄɲä·¤Þ¤¹¡£
¡¦OpenGLES.framework
¡¦QuartzCore.framework
&ref(framework.png);
¶ñÂÎŪ¤Ê½é´ü²½½èÍý¤Ï
OpenGLView.m¤Ë¼ÂÁõ¤·¤Æ¤¢¤ê¤Þ¤¹
¤Û¤Ü·è¤Þ¤ê¤¤Ã¤¿¼ê½ç¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¤Î¤Ç¼¡²ó°Ê¹ß¤â»È¤¤²ó...
°Ê²¼¤Îή¤ì¤È¤Ê¤ê¤Þ¤¹¡£
¡¦¡CAEAGLLayer¥¯¥é¥¹¤ò¥ì¥¤¥ä¡¼¤ËÀßÄê
¡¦¢ÉÁ²è¥ì¥¤¥ä¡¼¤òȾƩÌÀ²½
¡¦£OpenGL¥³¥ó¥Æ¥¥¹¥È¤ÎºîÀ®
¡¦¤¥«¥é¡¼¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
¡¦¥Z¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
¡¦¦¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
¡¦§Äê´üŪ¤Ë¥ì¥ó¥À¥ê¥ó¥°½èÍý¤ò¸Æ¤Ó½Ð¤·
´ðËÜŪ¤Ë§¤ÇOpenGLView¥¯¥é¥¹¤Îrender¥á¥½¥Ã¥É¤òÄê´üŪ¤Ë¸Æ¤Ó...
¼¡²ó°Ê¹ß¤ÏOpenGLView¥¯¥é¥¹¤ò·Ñ¾µ¤·¡¢
render¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤ÆÉÁ²è½èÍýÉôʬ¤òÊѹ¹¤·¤Þ...
// ¡CAEAGLLayer¥¯¥é¥¹¤ò¥ì¥¤¥ä¡¼¤ËÀßÄê¡ÊOpenGL¥³¥ó¥Æ¥ó¥Ä...
+ (Class)layerClass {
return [CAEAGLLayer class];
}
// ¢ÉÁ²è¥ì¥¤¥ä¡¼¤òȾƩÌÀ²½¡Ê¥Ñ¥Õ¥¡¡¼¥Þ¥ó¥¹¤ÏȾƩÌÀ²½¤·¤¿...
- (void)setupLayer {
_eaglLayer = (CAEAGLLayer*) self.layer;
_eaglLayer.opaque = YES;
}
// £OpenGL¥³¥ó¥Æ¥¥¹¥È¤ÎºîÀ®
// ¥³¥ó¥Æ¥¥¹¥È¤ÏÉÁ²è¤ËɬÍפʾðÊó¤òÁ´¤Æ´ÉÍý¤·¤Æ¤¤¤ë
- (void)setupContext {
EAGLRenderingAPI api = kEAGLRenderingAPIOpenGLES2;
_context = [[EAGLContext alloc] initWithAPI:api];
if (!_context) {
NSLog(@"Failed to initialize OpenGLES 2.0 contex...
exit(1);
}
if (![EAGLContext setCurrentContext:_context]) {
NSLog(@"Failed to set current OpenGL context");
exit(1);
}
}
// ¤¥«¥é¡¼¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
- (void)setupRenderBuffer {
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ÎÀ¸À®
glGenRenderbuffers(1, &_colorRenderBuffer);
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ¥Ð¥¤¥ó¥É
glBindRenderbuffer(GL_RENDERBUFFER, _colorRenderBuffe...
// ÉÁ²è¥ì¥¤¥ä¡¼¤Ë¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤Î¥á¥â¥ê³ÎÊÝ
[_context renderbufferStorage:GL_RENDERBUFFER fromDra...
}
// ¥Z¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
- (void)setupDepthBuffer {
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ÎÀ¸À®
glGenRenderbuffers(1, &_depthRenderBuffer);
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ¥Ð¥¤¥ó¥É
glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderBuffe...
// ¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ËZ¥Ð¥Ã¥Õ¥¡ÄɲÃ
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPO...
}
// ¦¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
- (void)setupFrameBuffer {
GLuint framebuffer;
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ÎºîÀ®
glGenFramebuffers(1, &framebuffer);
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ¥Ð¥¤¥ó¥É
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤Ë¿§Â°À¤Î¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ò´ØÏ¢¤Å¤±
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_AT...
// ¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤Ë¿¼ÅÙ°À¤Î¥ì¥ó¥À¡¼¥Ð¥Ã¥Õ¥¡¤ò´ØÏ¢...
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_AT...
}
// ÉÁ²è½èÍý
- (void)render:(CADisplayLink*)displayLink {
// ¥¹¥¯¥ê¡¼¥ó¤Î¥¯¥ê¥¢
glClearColor(0, 0, 0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Z¥Æ¥¹¥È͸ú
glEnable(GL_DEPTH_TEST);
// ¥«¥ê¥ó¥°Í¸ú
glEnable(GL_CULL_FACE);
//glDisable(GL_CULL_FACE);
glFrontFace(GL_CW);
//glFrontFace(GL_CCW);
// ¥À¥Ö¥ë¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°
[_context presentRenderbuffer:GL_RENDERBUFFER];
}
// §Äê´üŪ¤ËÉÁ²è½èÍý¤ò¸Æ¤Ó½Ð¤·
// render¥á¥½¥Ã¥É¤òÄê´üŪ¤Ë¸Æ¤Ó½Ð¤¹
// ¤³¤Î¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Ærender¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë
- (void)setupDisplayLink {
CADisplayLink* displayLink = [CADisplayLink displayLi...
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] ...
}
¼¡¡§iPhone3D¹ÖºÂ2²ó
|¤Ë¤ã¤ó¤Ñ¤¹¡¼|0|
|Á¡°ÝÁÓ¼º¡ª|0|
|²æ¤é¤¬¥º¥ô¥£¥º¥À¡¼¤Î¸÷¤ò¡¢¤¢¤Þ¤Í¤¯À¤³¦¤Ë|0|
¥Ú¡¼¥¸Ì¾: