OSDN Git Service

サンプルコードを追加
authormaruhiro <maruhiro@bridge.ocn.ne.jp>
Sun, 22 Jun 2014 15:02:15 +0000 (00:02 +0900)
committermaruhiro <maruhiro@bridge.ocn.ne.jp>
Sun, 22 Jun 2014 15:02:15 +0000 (00:02 +0900)
27 files changed:
SDL_CreateThread.html
SDL_GL_BindTexture.html
SDL_GL_CreateContext.html
SDL_GL_ExtensionSupported.html
SDL_GL_GetProcAddress.html
SDL_GL_SetAttribute.html
SDL_GLcontextFlag.html
SDL_GLprofile.html
SDL_GetPowerInfo.html
SDL_GetPrefPath.html
SDL_GetThreadID.html
SDL_GetTicks.html
SDL_GetVersion.html
SDL_GetWindowSurface.html
SDL_GetWindowWMInfo.html
SDL_HapticDirection.html
SDL_HapticQuery.html
SDL_HapticRumbleSupported.html
SDL_Init.html
SDL_InitSubSystem.html
SDL_IsGameController.html
SDL_JoystickEventState.html
SDL_JoystickGetAxis.html
SDL_JoystickGetBall.html
SDL_JoystickName.html
SDL_JoystickNameForIndex.html
SDL_JoystickOpen.html

index 2a3f86f..9802e1f 100644 (file)
@@ -36,21 +36,27 @@ int TestThread(void *ptr);
 \r
 int main(int argc, char *argv[])\r
 {\r
-    SDL_Thread *thread;\r
-    int         threadReturnValue;\r
+    SDL_Thread   *thread;\r
+    SDL_threadID threadID;\r
+    int          threadReturnValue;\r
 \r
-    printf("\nSDL_CreateThread\82Ì\8aÈ\92P\82È\83e\83X\83g:");\r
+    printf("\n\8aÈ\92P\82ÈSDL_CreateThread\82Ì\83e\83X\83g:");\r
 \r
-    // Simply create a thread\r
+    // \92P\82É\83X\83\8c\83b\83h\82ð\90\90¬\82·\82é\r
     thread = SDL_CreateThread(TestThread, "TestThread", (void *)NULL);\r
 \r
     if (NULL == thread) {\r
         printf("\nSDL_CreateThread \8e¸\94s: %s\n", SDL_GetError());\r
-    } else {\r
-        SDL_WaitThread(thread, &threadReturnValue);\r
-        printf("\n\83X\83\8c\83b\83h\82Ì\96ß\82è\92l: %d", threadReturnValue);\r
+        exit(-1);\r
     }\r
 \r
+    // \90V\82µ\82­\8aJ\8en\82³\82ê\82½\83X\83\8c\83b\83h\82ÌID\82ð\93¾\82é\r
+    threadID = SDL_GetThreadID(thread);\r
+\r
+    // \83X\83\8c\83b\83h\82Ì\8a®\97¹\82ð\91Ò\82¿\96ß\82è\92l\82ð\93¾\82é\r
+    SDL_WaitThread(thread, &threadReturnValue);\r
+    printf("\n\83X\83\8c\83b\83h\82Ì\96ß\82è\92l: %d", threadReturnValue);\r
+\r
     return 0;\r
 }\r
 \r
index 55e8104..64f19cd 100644 (file)
@@ -23,6 +23,225 @@ OpenGL
 </table>\r
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«0, \91\80\8dì\82ª\91Î\89\9e\82µ\82Ä\82¢\82È\82¢\82Æ\82«\82Í-1\82ð\96ß\82·.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+\88È\89º\82Ì3\82Â\82Ì\97á\82ÍIgnifuga Game Engine\82©\82ç\93¾\82½\82à\82Ì\82Å, SDL2\82ð\8eg\82Á\82ÄlibRocket(\83\8c\83\93\83_\83\89\81[\82ÉOpenGL\82ð\8eg\82Á\82Ä\82¢\82é)\82ð\82Ç\82Ì\82æ\82¤\82É\93\9d\8d\87\82µ\82Ä\82¢\82é\82©\82ð\8e¦\82·.\r
+</p>\r
+<h3>(1)</h3>\r
+<p>\r
+<code>\r
+<pre>\r
+void RocketSDLRenderInterfaceOpenGL::RenderGeometry(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, const Rocket::Core::TextureHandle texture, const Rocket::Core::Vector2f& translation)\r
+{\r
+    // SDL\82Í\83V\83F\81[\83_\81[\82ð\8eg\82¤\82Ì\82Å, \82±\82±\82Å\82Í\96³\8cø\89»\82·\82é\95K\97v\82ª\82 \82é\r
+    render_data.glUseProgramObjectARB(0);\r
+    render_data.glPushMatrix();\r
+    render_data.glTranslatef(translation.x, translation.y, 0);\r
+\r
+    std::vector&lt;Rocket::Core::Vector2f&gt; Positions(num_vertices);\r
+    std::vector&lt;Rocket::Core::Colourb&gt; Colors(num_vertices);\r
+    std::vector&lt;Rocket::Core::Vector2f&gt; TexCoords(num_vertices);\r
+    float texw, texh;\r
+\r
+    SDL_Texture* sdl_texture = NULL;\r
+    if(texture) {\r
+        render_data.glEnableClientState(GL_TEXTURE_COORD_ARRAY);\r
+        sdl_texture = (SDL_Texture *) texture;\r
+        SDL_GL_BindTexture(sdl_texture, &texw, &texh);\r
+    }\r
+\r
+    for (int  i = 0; i &lt; num_vertices; i++) {\r
+        Positions[i] = vertices[i].position;\r
+        Colors[i] = vertices[i].colour;\r
+        if (sdl_texture) {\r
+            TexCoords[i].x = vertices[i].tex_coord.x * texw;\r
+            TexCoords[i].y = vertices[i].tex_coord.y * texh;\r
+        } else {\r
+            TexCoords[i] = vertices[i].tex_coord;\r
+        }\r
+    }\r
+\r
+    render_data.glEnableClientState(GL_VERTEX_ARRAY);\r
+    render_data.glEnableClientState(GL_COLOR_ARRAY);\r
+    render_data.glVertexPointer(2, GL_FLOAT, 0, &Positions[0]);\r
+    render_data.glColorPointer(4, GL_UNSIGNED_BYTE, 0, &Colors[0]);\r
+    render_data.glTexCoordPointer(2, GL_FLOAT, 0, &TexCoords[0]);\r
+\r
+\r
+    render_data.glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);\r
+    render_data.glEnable(GL_BLEND);\r
+    render_data.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);\r
+    render_data.glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_INT, indices);\r
+    render_data.glDisableClientState(GL_VERTEX_ARRAY);\r
+    render_data.glDisableClientState(GL_COLOR_ARRAY);\r
+\r
+\r
+    if (sdl_texture) {\r
+        SDL_GL_UnbindTexture(sdl_texture);\r
+        render_data.glDisableClientState(GL_TEXTURE_COORD_ARRAY);\r
+    }\r
+\r
+    render_data.glColor4f(1.0, 1.0, 1.0, 1.0);\r
+    render_data.glPopMatrix();\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
+<h3>(2)</h3>\r
+<p>\r
+<code>\r
+<pre>\r
+void RocketSDLRenderInterfaceOpenGLES::RenderGeometry(Rocket::Core::Vertex* vertices, int num_vertices, int* indices, int num_indices, const Rocket::Core::TextureHandle texture, const Rocket::Core::Vector2f& translation)\r
+{\r
+    render_data.glPushMatrix();\r
+    render_data.glTranslatef(translation.x, translation.y, 0);\r
+\r
+    std::vector&lt;Rocket::Core::Vector2f&gt; Positions(num_vertices);\r
+    std::vector&lt;Rocket::Core::Colourb&gt; Colors(num_vertices);\r
+    std::vector&lt;Rocket::Core::Vector2f&gt; TexCoords(num_vertices);\r
+    float texw, texh;\r
+\r
+    SDL_Texture* sdl_texture = NULL;\r
+    if(texture) {\r
+        render_data.glEnableClientState(GL_TEXTURE_COORD_ARRAY);\r
+        sdl_texture = (SDL_Texture *) texture;\r
+        SDL_GL_BindTexture(sdl_texture, &texw, &texh);\r
+    }\r
+\r
+    for (int  i = 0; i &lt; num_vertices; i++) {\r
+        Positions[i] = vertices[i].position;\r
+        Colors[i] = vertices[i].colour;\r
+        if (sdl_texture) {\r
+            TexCoords[i].x = vertices[i].tex_coord.x * texw;\r
+            TexCoords[i].y = vertices[i].tex_coord.y * texh;\r
+        } else {\r
+            TexCoords[i] = vertices[i].tex_coord;\r
+        }\r
+    }\r
+\r
+    unsigned short newIndicies[num_indices];\r
+    for (int i = 0; i &lt; num_indices; i++) {\r
+        newIndicies[i] = (unsigned short) indices[i];\r
+    }\r
+\r
+    render_data.glEnableClientState(GL_VERTEX_ARRAY);\r
+    render_data.glEnableClientState(GL_COLOR_ARRAY);\r
+    render_data.glVertexPointer(2, GL_FLOAT, 0, &Positions[0]);\r
+    render_data.glColorPointer(4, GL_UNSIGNED_BYTE, 0, &Colors[0]);\r
+    render_data.glTexCoordPointer(2, GL_FLOAT, 0, &TexCoords[0]);\r
+\r
+    render_data.glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);\r
+    render_data.glEnable(GL_BLEND);\r
+    render_data.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);\r
+    render_data.glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, newIndicies);\r
+    render_data.glDisableClientState(GL_VERTEX_ARRAY);\r
+    render_data.glDisableClientState(GL_COLOR_ARRAY);\r
+    render_data.glDisableClientState(GL_TEXTURE_COORD_ARRAY);\r
+\r
+    if (sdl_texture) {\r
+        SDL_GL_UnbindTexture(sdl_texture);\r
+        render_data.glDisableClientState(GL_TEXTURE_COORD_ARRAY);\r
+    }\r
+\r
+    render_data.glColor4f(1.0, 1.0, 1.0, 1.0);\r
+    render_data.glPopMatrix();\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
+<h3>(3)</h3>\r
+<p>\r
+<code>\r
+<pre>\r
+    SDL_Texture* sdl_texture = NULL;\r
+    if(texture) render_data.glUseProgram(program_texture_id);\r
+    else render_data.glUseProgram(program_color_id);\r
+    int width, height;\r
+    SDL_Rect rvp;\r
+    SDL_RenderGetViewport(renderer, &rvp);\r
+\r
+    GLfloat projection[4][4];\r
+\r
+    // \95½\8ds\93\8a\89e\82Ì\8f\80\94õ\82ð\82·\82é\r
+    projection[0][0] = 2.0f / rvp.w;\r
+    projection[0][1] = 0.0f;\r
+    projection[0][2] = 0.0f;\r
+    projection[0][3] = 0.0f;\r
+    projection[1][0] = 0.0f;\r
+    //if (renderer-;&gt;target) {\r
+    //    projection[1][1] = 2.0f / height;\r
+    //} else {\r
+        projection[1][1] = -2.0f / rvp.h;\r
+    //}\r
+    projection[1][2] = 0.0f;\r
+    projection[1][3] = 0.0f;\r
+    projection[2][0] = 0.0f;\r
+    projection[2][1] = 0.0f;\r
+    projection[2][2] = 0.0f;\r
+    projection[2][3] = 0.0f;\r
+    projection[3][0] = -1.0f;\r
+    //if (renderer-&gt;target) {\r
+    //    projection[3][1] = -1.0f;\r
+    //} else {\r
+        projection[3][1] = 1.0f;\r
+    //}\r
+    projection[3][2] = 0.0f;\r
+    projection[3][3] = 1.0f;\r
+\r
+    // \93\8a\89e\8ds\97ñ\82ð\90Ý\92è\82·\82é\r
+    if (texture) {\r
+        render_data.glUniformMatrix4fv(u_texture_projection, 1, GL_FALSE, (GLfloat *)projection);\r
+        render_data.glUniform2f(u_texture_translation, translation.x, translation.y);\r
+    } else {\r
+        render_data.glUniformMatrix4fv(u_color_projection, 1, GL_FALSE, (GLfloat *)projection);\r
+        render_data.glUniform2f(u_color_translation, translation.x, translation.y);\r
+    }\r
+\r
+    render_data.glEnable(GL_BLEND);\r
+    render_data.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);\r
+\r
+    float texw, texh;\r
+\r
+    unsigned short newIndicies[num_indices];\r
+    for (int i = 0; i &lt; num_indices; i++) {\r
+      newIndicies[i] = (unsigned short) indices[i];\r
+    }\r
+\r
+    glVertexAttribPointer(ROCKETGLUE_ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(Rocket::Core::Vertex), &vertices[0].position);\r
+    glVertexAttribPointer(ROCKETGLUE_ATTRIBUTE_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(Rocket::Core::Vertex), &vertices[0].colour);\r
+    render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_POSITION);\r
+    render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_TEXCOORD);\r
+    render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_COLOR);\r
+\r
+    if (texture) {\r
+        sdl_texture = (SDL_Texture *) texture;\r
+        SDL_GL_BindTexture(sdl_texture, &texw, &texh);\r
+        render_data.glUniform1i(u_texture, 0);\r
+        glVertexAttribPointer(ROCKETGLUE_ATTRIBUTE_TEXCOORD, 2, GL_FLOAT, GL_FALSE, sizeof(Rocket::Core::Vertex), &vertices[0].tex_coord);\r
+    } else {\r
+        render_data.glActiveTexture(GL_TEXTURE0);\r
+        render_data.glDisable(GL_TEXTURE_2D);\r
+        render_data.glDisableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_TEXCOORD);\r
+    }\r
+\r
+    render_data.glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, newIndicies);\r
+\r
+    /* ROCKETGLUE_ATTRIBUTE_COLOR (2)\82ð\88À\91S\82É\96³\8cø\89»\82Å\82«\82é. SDL\82Í\95K\97v\82È\82ç\82Îvertex attrib 2\82ð\8dÄ\82Ñ\97L\8cø\89»\82Å\82«\82é */\r
+    render_data.glDisableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_COLOR);\r
+\r
+    /* SDL\82ªRenderCopy/Ex\82ð\8cÄ\82Ô\82Æ\82«\97L\8cø\89»\82³\82ê\82È\82¢\82½\82ß\8cÝ\8a·\90«\82Ì\82½\82ß\82É\97L\8cø\89»\82µ\82½\r
+       ROCKETGLUE_ATTRIBUTE_POSITION (0) \82ÆROCKETGLUE_ATTRIBUTE_TEXCOORD (1) \82ð\97£\82· */\r
+    if(sdl_texture) SDL_GL_UnbindTexture(sdl_texture);\r
+    else render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_TEXCOORD);\r
+\r
+    /* \83u\83\8c\83\93\83h\82ð\83\8a\83Z\83b\83g\82µ, \89æ\96Ê\82Ì\8aO\82É\83t\83F\83C\83N\82Ì\93_\82ð\95`\89æ\82µ\82Ä\83e\83N\83X\83`\83\83\82ð\83\8c\83\93\83_\83\8a\83\93\83O\8fê\8d\87\82É\94õ\82¦\82Ä\r
+       \8fó\91Ô\82ð\83\8a\83Z\83b\83g\82·\82é\95K\97v\82ª\82 \82é\82±\82Æ\82ðSDL\82É\92m\82ç\82¹\82é */\r
+    render_data.glDisable(GL_BLEND);\r
+    SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);\r
+    SDL_RenderDrawPoint(renderer, -1, -1);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \92l\82ª\93¾\82ç\82ê\82½\82È\82ç, texw\82Ætexh\82É\82Í\93¾\82ç\82ê\82½\83e\83N\83X\83`\83\83\82É\93K\82µ\82½\95\9d\82Æ\8d\82\82³\82ª\91ã\93ü\82³\82ê\82Ä\82¢\82é.\r
 \82Ù\82Æ\82ñ\82Ç\82Ì\8fê\8d\87\97¼\95û\82Ì\92l\82Í1.0\82Å\82 \82é.\r
index 6a113be..aa86f1b 100644 (file)
@@ -22,6 +22,28 @@ OpenGL
 <h2>\96ß\82è\92l</h2>\r
 window\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½OpenGL\83R\83\93\83e\83L\83X\83g, \83G\83\89\81[\82Ì\82Æ\82«NULL\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+// OpenGL\82ð\8eg\82¤\8fê\8d\87\82Í\83E\83B\83\93\83h\83E\90\90¬\8e\9e\82É\95K\82¸SDL_WINDOW_OPENGL\82ð\8aÜ\82ß\82é\95K\97v\82ª\82 \82é\r
+SDL_Window *window = SDL_CreateWindow(\r
+    "SDL2/OpenGL Demo", 0, 0, 640, 480, \r
+    SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);\r
+  \r
+// \83E\83B\83\93\83h\83E\82É\8aÖ\98A\95t\82¯\82½OpenGL\83R\83\93\83e\83L\83X\83g\82ð\90\90¬\82·\82é\r
+SDL_GLContext glcontext = SDL_GL_CreateContext(window);\r
+\r
+// \82±\82ê\82ÅGL\82ð\8cÄ\82Ô\82±\82Æ\82ª\82Å\82«\82é\82æ\82¤\82É\82È\82é\r
+glClearColor(0,0,0,1);\r
+glClear(GL_COLOR_BUFFER_BIT);\r
+SDL_GL_SwapWindow(window);\r
+\r
+// OpenGL\8aÖ\90\94\82ð\8eg\82¢\8fI\82¦\82ê\82Î, SDL_GLContext\82Í\8dí\8f\9c\82µ\82Ä\82æ\82¢\r
+SDL_GL_DeleteContext(glcontext);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \90V\82½\82ÉOpenGL\82ð\8eg\82¤Windows\83\86\81[\83U\81[\82Í, \97ð\8ej\93I\82È\97\9d\97R\82Å, OpenGL\83o\81[\83W\83\87\83\931.1\82Å\92Ç\89Á\82³\82ê\82½GL\8aÖ\90\94\82Í\83f\83t\83H\83\8b\83g\82Å\82Í\8eg\82¦\82È\82¢\82±\82Æ\82É\92\8d\88Ó\82µ\82È\82¯\82ê\82Î\82È\82ç\82È\82¢.\r
 \82±\82ê\82ç\82Ì\8aÖ\90\94\82Í, OpenGL\8ag\92£\82ð\88µ\82¤\83\89\83C\83u\83\89\83\8a\82Ü\82½\82Í<a href="SDL_GL_GetProcAddress.html">SDL_GL_GetProcAddress()</a>\82Æ\82»\82Ì\8aÖ\98A\82Ì\8aÖ\90\94\82Å\8eÀ\8ds\92\86\82É\93Ç\82Ý\8d\9e\82Þ\82±\82Æ\82ª\82Å\82«\82é.\r
index 5fc4055..0e7ab94 100644 (file)
 </table>\r
 <h2>\96ß\82è\92l</h2>\r
 \8ag\92£\82É\91Î\89\9e\82µ\82Ä\82¢\82ê\82ÎSDL_TRUE, \82µ\82Ä\82¢\82È\82¯\82ê\82ÎSDL_FALSE\82ð\96ß\82·.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+    if (SDL_GL_ExtensionSupported("GL_EXT_framebuffer_blit")) {\r
+        draw_to_the_screen_with_framebuffer_blit();   // \91¬\82¢!\r
+    } else {\r
+        draw_to_the_screen_with_a_textured_quad();  // \92x\82¢!\r
+    }\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \82±\82Ì\8aÖ\90\94\82Í\83J\83\8c\83\93\83g\83R\83\93\83e\83L\83X\83g\82Å\93®\8dì\82·\82é.\r
index c370dc9..43c0ccb 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \82»\82Ì\96¼\91O\82ÌOpenGL\8aÖ\90\94\82Ö\82Ì\83|\83C\83\93\83^\82ð\96ß\82·.\r
 \96ß\82³\82ê\82½\83|\83C\83\93\83^\82Í\82»\82Ì\8aÖ\90\94\82É\93K\82µ\82½\83V\83O\83j\83`\83\83\82Å\83L\83\83\83X\83g\82·\82é\95K\97v\82ª\82 \82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+typedef void (APIENTRY * GL_ActiveTextureARB_Func)(unsigned int);\r
+GL_ActiveTextureARB_Func glActiveTextureARB_ptr = 0;\r
+\r
+/* \8aÖ\90\94\82Ì\83|\83C\83\93\83^\82ð\93¾\82é */\r
+glActiveTextureARB_ptr=(GL_ActiveTextureARB_Func) SDL_GL_GetProcAddress("glActiveTextureARB");\r
+\r
+/* \90³\82µ\82­\8aÖ\90\94\82ð\8cÄ\82×\82é\82æ\82¤\82É\82·\82é\82Ì\82Í\82 \82È\82½\82Ì\90Ó\94C\82Å\82 \82é! */\r
+glActiveTextureARB_ptr(GL_TEXTURE0_ARB);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 GL\83\89\83C\83u\83\89\83\8a\82ð\8eÀ\8ds\92\86\82É<a href="SDL_GL_LoadLibrary.html">SDL_GL_LoadLibrary()</a>\82Å\93Ç\82Ý\8d\9e\82ñ\82¾\82È\82ç\82Î, \91S\82Ä\82ÌGL\8aÖ\90\94\82Í\82±\82Ì\95û\96@\82Å\93Ç\82Ý\8fo\82³\82È\82¯\82ê\82Î\82È\82ç\82È\82¢.\r
index 1ce0c72..d0cc52c 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«0, \8e¸\94s\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+SDL_Window *window;\r
+SDL_GLContext context;\r
+\r
+SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);\r
+SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);\r
+SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);\r
+SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);\r
+SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);\r
+\r
+window = SDL_CreateWindow("OpenGL Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL);\r
+if (!window) {\r
+    fprintf(stderr, "\83E\83B\83\93\83h\83E\82ð\90\90¬\82Å\82«\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+    return;\r
+}\r
+\r
+context = SDL_GL_CreateContext(window);\r
+if (!context) {\r
+    fprintf(stderr, "\83R\83\93\83e\83L\83X\83g\82ð\90\90¬\82Å\82«\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+    return;\r
+}\r
+\r
+printf("\90Ô\82Ì\83T\83C\83Y: %d, \97Î\82Ì\83T\83C\83Y: %d, \90Â\82Ì\83T\83C\83Y: %d\n",\r
+    SDL_GL_GetAttribute(SDL_GL_RED_SIZE),\r
+    SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE),\r
+    SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE));\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \82±\82Ì\8aÖ\90\94\82ÍOpenGL\91®\90«attr\82Ì\92l\82ðvalue\82É\90Ý\92è\82·\82é.\r
index ab253c8..25016c6 100644 (file)
@@ -20,6 +20,14 @@ OpenGL
 <tr><td>SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG</td><td>\8fÚ\8d×\82ð\8eQ\8fÆ\82·\82é\82±\82Æ</td></tr>\r
 <tr><td>SDL_GL_CONTEXT_RESET_ISOLATION_FLAG</td><td>\8fÚ\8d×\82ð\8eQ\8fÆ\82·\82é\82±\82Æ</td></tr>\r
 </table>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \82±\82Ì\97ñ\8b\93\91Ì\82Í<a href="SDL_GL_SetAttribute.html">SDL_GL_SetAttribute</a>\82Å<a href="SDL_GLattr.html">SDL_GL_CONTEXT_FLAGS</a>\82Æ\91g\82Ý\8d\87\82í\82¹\82Ä\8eg\82¤.\r
 \83t\83\89\83O\82ð\98_\97\9d\98a\82Å\95¡\90\94\90Ý\92è\82Å\82«\82é.\r
index b5dad68..2477c9b 100644 (file)
@@ -19,6 +19,14 @@ OpenGL
 <tr><td>SDL_GL_CONTEXT_PROFILE_COMPATIBILITY</td><td>Open GL \8cÝ\8a·\83v\83\8d\83t\83@\83C\83\8b - \94p\8e~\82³\82ê\82½\8b@\94\\82Í\8b\96\89Â\82³\82ê\82é</td></tr>\r
 <tr><td>SDL_GL_CONTEXT_PROFILE_ES</td><td>Open GL \83v\83\8d\83t\83@\83C\83\8b - OpenGL\82Ì\83T\83u\83Z\83b\83g\8b@\94\\82Ì\82Ý\8eg\82¦\82é</td></tr>\r
 </table>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \82±\82Ì\97ñ\8b\93\91Ì\82Í<a href="SDL_GL_SetAttribute.html">SDL_GL_SetAttribute</a>\82Å<a href="SDL_GLattr.html">SDL_GL_CONTEXT_PROFILE_MASK</a>\82Æ\91g\82Ý\8d\87\82í\82¹\82Ä\8eg\82¤.\r
 <a href="SDL_GLattr.html">SDL_GL_CONTEXT_PROFILE_MASK</a>\82Í\98_\97\9d\98a\82Å\95¡\90\94\90Ý\92è\82Å\82«\82é\82ª, \83v\83\8d\83t\83@\83C\83\8b\82Í\94r\91¼\93I\82Å\82 \82è, <a href="SDL_GL_SetAttribute.html">SDL_GL_SetAttribute</a>\82Í1\82Â\82µ\82©\8eó\82¯\95t\82¯\82È\82¢.\r
index 1f57445..4ddc14a 100644 (file)
 \83o\83b\83e\83\8a\81[\82Ì\8fó\91Ô\82ð\96ß\82·.\r
 \92l\82Í<a href="SDL_PowerState.html">SDL_PowerState</a>\82ð\8eQ\8fÆ\82·\82é\82±\82Æ.\r
 \8fó\91Ô\82ª\82í\82©\82ç\82È\82¢, \82Ü\82½\82Í\83o\83b\83e\83\8a\81[\82Å\93®\8dì\82µ\82Ä\82¢\82È\82¢\8fê\8d\87\82Í, \97¼\95û\82Ì\88ø\90\94\82É-1\82ª\91ã\93ü\82³\82ê\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+int secs, pct; \r
+if (SDL_GetPowerInfo(&secs, &pct) == SDL_POWERSTATE_ON_BATTERY) {\r
+    printf("\83o\83b\83e\83\8a\81[\82Å\93®\8dì\92\86: ");\r
+    if (secs == -1) {\r
+        printf("(\8ec\82è\8e\9e\8aÔ \95s\96¾)\n");\r
+    } else {\r
+        printf("(\8ec\82è\8e\9e\8aÔ %d \95b)\n", secs);\r
+    }\r
+\r
+    if (pct == -1) {\r
+        printf("(\8ec\83o\83b\83e\83\8a\81[\97¦ \95s\96¾)\n");\r
+    } else {\r
+        printf("(\8ec\83o\83b\83e\83\8a\81[\97¦ %d \83p\81[\83Z\83\93\83g)\n", pct);\r
+    }\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \83o\83b\83e\83\8a\81[\8fó\91Ô\82ð\90â\91Î\93I\82È\90^\8eÀ\82Æ\82Æ\82ç\82¦\82Ä\82Í\82È\82ç\82È\82¢.\r
index ee5bcf2..9067b18 100644 (file)
 \96ß\82³\82ê\82½\83|\83C\83\93\83^\82Í\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\8aÇ\97\9d\82·\82é\95K\97v\82ª\82 \82é.\r
 \8eg\82Á\82½\8cã\82Í\83|\83C\83\93\83^\82É\91Î\82µ\82Ä<a href="SDL_free.html">SDL_free()</a>\82ð\8cÄ\82Ô\82±\82Æ.\r
 </p>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+char *pref_path = NULL;\r
+\r
+void InitializePrefPath() {\r
+    char *base_path = SDL_GetPrefPath("My Company", "My Awesome SDL 2 Game");\r
+    if (base_path) {\r
+        pref_path = SDL_strdup(base_path);\r
+        SDL_free(base_path);\r
+    } else {\r
+        /* Do something to disable writing in-game */\r
+        /* \83Q\81[\83\80\82Å\8fî\95ñ\82ð\8f\91\82©\82È\82¢\82æ\82¤\82É\82·\82é\8f\88\97\9d\82ð\82±\82±\82É\8f\91\82­ */\r
+    }\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \82±\82Ì\8aÖ\90\94\82ª\96ß\82µ\82½\8fê\8f\8a\82Ì\82Ý\88À\91S\82É\83t\83@\83C\83\8b\82ð\8f\91\82«\8d\9e\82ß\82é\82Æ\82Ý\82È\82·\82×\82«\82Å\82 \82é.\r
index 7853f11..ab437d1 100644 (file)
 </table>\r
 <h2>\96ß\82è\92l</h2>\r
 \8ew\92è\82Ì\83X\83\8c\83b\83h\82Ì\83X\83\8c\83b\83hID\82ð\96ß\82·. thread\82ªNULL\82Ì\8fê\8d\87\82Í\8c»\8dÝ\82Ì\83X\83\8c\83b\83h\82Ì\83X\83\8c\83b\83hID\82ð\96ß\82·.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+#include &lt;stdio.h&gt;\r
+#include "SDL_thread.h"\r
+#include "SDL_timer.h"\r
+\r
+int TestThread(void *ptr);\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+    SDL_Thread *thread;\r
+    int         threadReturnValue;\r
+\r
+    printf("\nSDL_CreateThread\82Ì\8aÈ\92P\82È\83e\83X\83g:");\r
+\r
+    // Simply create a thread\r
+    thread = SDL_CreateThread(TestThread, "TestThread", (void *)NULL);\r
+\r
+    if (NULL == thread) {\r
+        printf("\nSDL_CreateThread \8e¸\94s: %s\n", SDL_GetError());\r
+    } else {\r
+        SDL_WaitThread(thread, &threadReturnValue);\r
+        printf("\n\83X\83\8c\83b\83h\82Ì\96ß\82è\92l: %d", threadReturnValue);\r
+    }\r
+\r
+    return 0;\r
+}\r
+\r
+// \82Æ\82Ä\82à\8aÈ\92P\82È\83X\83\8c\83b\83h - 50ms\8aÔ\8au\82Å0\82©\82ç9\82Ü\82Å\83J\83E\83\93\83g\82·\82é\r
+int TestThread(void *ptr)\r
+{\r
+    int cnt;\r
+\r
+    for (cnt = 0; cnt &lt; 10; ++cnt) {\r
+        printf("\n\83X\83\8c\83b\83h\83J\83E\83\93\83^: %d", cnt);\r
+        SDL_Delay(50);\r
+    }\r
+\r
+    return cnt;\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \82±\82Ì\83X\83\8c\83b\83hID\82ÍOS\82É\82æ\82Á\82Ä\95ñ\8d\90\82³\82ê\82é.\r
 \83X\83\8c\83b\83h\82É\91Î\89\9e\82µ\82Ä\82¢\82È\82¢\8aÂ\8b«\82Ì\8fê\8d\87\82Í, \96ß\82è\92l\82Í\8fí\82É0\82Å\82 \82é.\r
index 7bce0a6..c582b5e 100644 (file)
@@ -17,6 +17,25 @@ SDL
 <code>Uint32 SDL_GetTicks(void)</code>\r
 <h2>\96ß\82è\92l</h2>\r
 SDL\82ª\8f\89\8aú\89»\82³\82ê\82Ä\82©\82ç\8co\89ß\82µ\82½\8e\9e\8aÔ\82ð32bit\95\84\8d\86\82È\82µ\90®\90\94\82Å\96ß\82·.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+unsigned int lastTime = 0, currentTime;\r
+while (!quit) {\r
+    // \82±\82±\82Å\8f\88\97\9d\82ð\8ds\82¤\r
+    // ...\r
+\r
+    // 1\95b\82É1\89ñ\95ñ\8d\90\82·\82é\r
+    currentTime = SDL_GetTicks();\r
+    if (currentTime > lastTime + 1000) {\r
+        printf("\95ñ\8d\90: %d\n", variable);\r
+        lastTime = currentTime;\r
+    }\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \82±\82Ì\92l\82Í\83v\83\8d\83O\83\89\83\80\82ª\8eÀ\8ds\82³\82ê\82Ä\82©\82ç\96ñ49\93ú\82Å\8aª\82«\96ß\82é.\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
index f4f7f0a..341227d 100644 (file)
 <table border="1" summary="SDL_GetVersion">\r
 <tr><td>ver</td><td>\83o\81[\83W\83\87\83\93\82ð\91ã\93ü\82·\82é<a href="SDL_Version-structure.html">SDL_version</a></td></tr>\r
 </table>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+SDL_version compiled;\r
+SDL_version linked;\r
+\r
+SDL_VERSION(&compiled);\r
+SDL_GetVersion(&linked);\r
+printf("\83R\83\93\83p\83C\83\8b\82µ\82½SDL\82Ì\83o\81[\83W\83\87\83\93\82Í %d.%d.%d ...\n", compiled.major, compiled.minor, compiled.patch);\r
+printf("\82µ\82©\82µ, \83\8a\83\93\83N\82µ\82½SDL\82Ì\83o\81[\83W\83\87\83\93\82Í %d.%d.%d\n", linked.major, linked.minor, linked.patch);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \82à\82µ\93®\93I\83\8a\83\93\83N\83\89\83C\83u\83\89\83\8a\82ð\8eg\82Á\82Ä\82¢\82é\82È\82ç\82Î, \8eÀ\8ds\8e\9e\82Ì\83o\81[\83W\83\87\83\93\82Í\90V\82µ\82¢\82±\82Æ\82à\8cÃ\82¢\82±\82Æ\82à\82 \82è\82¤\82é\82±\82Æ\82É\92\8d\88Ó\82·\82é\82±\82Æ.\r
index 46faa7b..cea6ff8 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«\83E\83B\83\93\83h\83E\82Ì\83T\81[\83t\83F\83C\83X\82ð, \8e¸\94s\82Ì\82Æ\82«NULL\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+#include "SDL.h" // SDL\83w\83b\83_\82ð\83C\83\93\83N\83\8b\81[\83h\82·\82é\r
+\r
+int main(int argc, char* argv[])\r
+{\r
+    SDL_Surface *screen; // SDL2\82Å\82à\93¯\82¶. \8cÃ\82¢\83R\81[\83h\82ð\8e\9d\82Á\82Ä\82­\82é\82±\82Æ\82ª\82Å\82«\82é\r
+    SDL_Window *window;\r
+    SDL_Surface *image;\r
+\r
+    SDL_Init(SDL_INIT_VIDEO); // \83r\83f\83I\82ð\8f\89\8aú\89»\82·\82é\r
+\r
+    // \95\81\92Ê\82É\83E\83B\83\93\83h\83E\82ð\90\90¬\82·\82é\r
+    window = SDL_CreateWindow("SDL2 Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);\r
+\r
+    // \82µ\82©\82µ, \91ã\82í\82è\82É\83\8c\83\93\83_\83\89\81[\82ð\90\90¬\82·\82é. \82±\82ê\82Å\89æ\96Ê\82É\92¼\90Ú\95`\89æ\82Å\82«\82é\r
+    screen = SDL_GetWindowSurface(window);\r
+\r
+    // \82±\82±\82Í\8cÃ\82¢\83R\81[\83h\82Æ\93¯\82\82Å\82 \82é\r
+    image = SDL_LoadBMP("box.bmp"); // loads image\r
+    SDL_BlitSurface(image, NULL, screen, NULL); // blit it to the screen\r
+    SDL_FreeSurface(image);\r
+\r
+    // \82±\82ê\82ÍSDL_Flip\82Ì\82æ\82¤\82É\93­\82­\r
+    SDL_UpdateWindowSurface(window);\r
+\r
+    // 2\95b\8aÔ\95\\8e¦\82·\82é\r
+    SDL_Delay(2000);\r
+    SDL_DestroyWindow(window);\r
+    SDL_Quit();\r
+    return 0;\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \82à\82µ\90\90¬\82³\82ê\82é\82±\82Æ\82ª\95K\97v\82È\82ç\82Î, \90V\82µ\82¢\83T\81[\83t\83F\83C\83X\82Í\83E\83B\83\93\83h\83E\82É\8dÅ\93K\82È\83s\83N\83Z\83\8b\8c`\8e®\82Å\90\90¬\82³\82ê\82é.\r
index 146a75a..ff6493d 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \82±\82Ì\8aÖ\90\94\82ª\8eÀ\91\95\82³\82ê\82Ä\82¢\82Ä, \82©\82Âinfo\8d\\91¢\91Ì\82Ì\83o\81[\83W\83\87\83\93\82ª\90³\82µ\82¯\82ê\82ÎSDL_TRUE, \8fî\95ñ\82ª\93¾\82ç\82ê\82È\82¯\82ê\82ÎSDL_FALSE\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+#include "SDL.h"\r
+#include "SDL_syswm.h"\r
+\r
+int main(int argc, char *argv[]) {\r
+  SDL_Window* window;\r
+  SDL_SysWMinfo info;\r
+\r
+  SDL_Init(0);\r
+\r
+  window = SDL_CreateWindow("", 0, 0, 0, 0, SDL_WINDOW_HIDDEN);\r
+\r
+  SDL_VERSION(&info.version); // info\8d\\91¢\91Ì\82ðSDL\82Ì\83o\81[\83W\83\87\83\93\82Å\8f\89\8aú\89»\82·\82é\r
+\r
+  if(SDL_GetWindowWMInfo(window,&info)) { // \82±\82Ì\8aÖ\90\94\82Í\90¬\8c÷\82Ì\82Æ\82«\90^\82ð\96ß\82·\r
+    // success\r
+    const char *subsystem = "\95s\96¾\82È\83V\83X\83e\83\80!";\r
+    switch(info.subsystem) {\r
+      case SDL_SYSWM_UNKNOWN:   break;\r
+      case SDL_SYSWM_WINDOWS:   subsystem = "Microsoft Windows(TM)";  break;\r
+      case SDL_SYSWM_X11:       subsystem = "X Window System";        break;\r
+      case SDL_SYSWM_DIRECTFB:  subsystem = "DirectFB";               break;\r
+      case SDL_SYSWM_COCOA:     subsystem = "Apple OS X";             break;\r
+      case SDL_SYSWM_UIKIT:     subsystem = "UIKit";                  break;\r
+    }\r
+\r
+    SDL_Log("\82±\82Ì\83v\83\8d\83O\83\89\83\80\82Í SDL \83o\81[\83W\83\87\83\93 %d.%d.%d \82Ì %s \82Å\93®\8dì\82µ\82Ä\82¢\82é\n", \r
+        (int)info.version.major,\r
+        (int)info.version.minor,\r
+        (int)info.version.patch,\r
+        subsystem);\r
+  } else {\r
+    // \8cÄ\82Ñ\8fo\82µ\8e¸\94s\r
+    SDL_LogError(SDL_LOG_CATEGORY_ERROR, "\83E\83B\83\93\83h\83E\82Ì\8fî\95ñ\82ð\93¾\82ç\82ê\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+  }\r
+\r
+  SDL_DestroyWindow(window);\r
+  SDL_Quit();\r
+\r
+  return 0;\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 <a href="SDL_SysWMinfo.html">SDL_SysWMinfo</a>\82ð\92è\8b`\82·\82é\82½\82ßSDL_syswm.h\82ð\83C\83\93\83N\83\8b\81[\83h\82·\82é\95K\97v\82ª\82 \82é.\r
index 4242967..79e18f4 100644 (file)
 <tr><td>Uint8</td><td>type</td><td>\8dÀ\95W\8cn\82Ì\8eí\97Þ (\8fÚ\8d×\82ð\8eQ\8fÆ\82·\82é\82±\82Æ)</td></tr>\r
 <tr><td>Sint32[]</td><td>dir</td><td>\95û\8cü (\8fÚ\8d×\82ð\8eQ\8fÆ\82·\82é\82±\82Æ)</td></tr>\r
 </table>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+\97Í\82ð\93ì\82©\82ç\82©\82¯\82é\8fê\8d\87\82Ì\91S\82Ä\82Ì\95\\8c»\82Ì\97á(\97Í\82ð\93ì\82©\82ç\82©\82¯\82é\8fê\8d\87\83\86\81[\83U\82Í\97Í\82É\91Î\8dR\82µ\82Ä\83X\83e\83B\83b\83N\82ð\88ø\82­\82±\82Æ\82É\82È\82é):\r
+<code>\r
+<pre>\r
+SDL_HapticDirection direction;\r
+\r
+// \92¼\8cð\8dÀ\95W\r
+direction.type = SDL_HAPTIC_CARTESIAN; // \92¼\8cð\8dÀ\95W\82ð\8eg\82¤\r
+direction.dir[0] = 0; // X\8e²\r
+direction.dir[1] = 1; // Y\8e²\r
+// \83f\83o\83C\83X\82Í2\8e\9f\8c³\82È\82Ì\82Å, 3\82Â\96Ú\82Ì\83p\83\89\83\81\81[\83^\82Í\95K\97v\82È\82¢\r
+\r
+// \8bÉ\8dÀ\95W\r
+direction.type = SDL_HAPTIC_POLAR; // \8bÉ\8dÀ\95W\82ð\8eg\82¤\r
+direction.dir[0] = 18000; // \8bÉ\8dÀ\95W\82Í\8dÅ\8f\89\82Ì\83p\83\89\83\81\81[\83^\82Ì\82Ý\8eg\82¤\r
+\r
+// \8b\85\96Ê\8dÀ\95W\r
+direction.type = SDL_HAPTIC_SPHERICAL; // \8b\85\96Ê\8dÀ\95W\82ð\8eg\82¤\r
+direction.dir[0] = 9000; // 2\8e\9f\8c³\82È\82Ì\82Å\82±\82ê\88È\8fã\83p\83\89\83\81\81[\83^\82Í\95K\97v\82È\82¢\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \83n\83v\83e\83B\83b\83N\83f\83o\83C\83X\82Ì\8aî\96{\95û\88Ê\82Í, \83f\83o\83C\83X\82Ì\88Ê\92u\82Æ\91\8a\91Î\93I\82Å\82 \82é.\r
index 5c07a46..7eda50f 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \91Î\89\9e\82·\82é\8b@\94\\82Ì\88ê\97\97\82ð\83r\83b\83g\82Ì\98_\97\9d\98a\82Å\96ß\82·. \8e¸\94s\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+extern SDL_Haptic *haptic;\r
+if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) {\r
+    printf("\83n\83v\83e\83B\83b\83N\8cø\89Ê\82Í\88ê\92è\8cø\89Ê(constant haptic effect)\82Å\82 \82é!");\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_HapticEffectSupported.html">SDL_HapticEffectSupported</a><br>\r
 <a href="SDL_HapticNumEffects.html">SDL_HapticNumEffects</a><br>\r
index c78da64..57c3de7 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \91Î\89\9e\82µ\82Ä\82¢\82é\82Æ\82«SDL_TRUE, \91Î\89\9e\82µ\82Ä\82¢\82È\82¢\82Æ\82«SDL_FALSE, \8e¸\94s\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+extern SDL_Haptic* dev;\r
+if (SDL_HapticRumbleSupported(dev)) {\r
+    SDL_HapticRumbleInit(dev);\r
+    SDL_HapticRumblePlay(dev, 1.0f, 3000);\r
+    SDL_Delay(3000);\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_HapticRumbleInit.html">SDL_HapticRumbleInit</a><br>\r
 <a href="SDL_HapticRumblePlay.html">SDL_HapticRumblePlay</a><br>\r
index 79fef3f..74bca52 100644 (file)
@@ -23,6 +23,98 @@ SDL
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«0, \83G\83\89\81[\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<h3>C</h3>\r
+<p>\r
+<code>\r
+<pre>\r
+#include "SDL.h"\r
+#include &lt;stdio.h&gt; /* fprintf()\82Ì\82½\82ß */\r
+#include &lt;stdlib.h&gt; /* atexit()\82Ì\82½\82ß */\r
+\r
+int main(int argv, char** argc) {\r
+    if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0) {\r
+        fprintf(stderr, \r
+                "\nSDL\82ð\8f\89\8aú\89»\82Å\82«\82È\82©\82Á\82½:  %s\n",\r
+                SDL_GetError()\r
+               );\r
+        return 1;\r
+    }\r
+    atexit(SDL_Quit);\r
+\r
+    /* ... */\r
+\r
+    return 0;\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
+<h3>C++</h3>\r
+<p>\r
+<code>\r
+<pre>\r
+#include &lt;exception&gt;\r
+#include &lt;string&gt;\r
+#include "SDL.h"\r
+\r
+class InitError: public std::exception {\r
+    public:\r
+        InitError();\r
+        InitError(const std::string&);\r
+        virtual ~InitError() throw();\r
+        virtual const char* what() const throw();\r
+    private:\r
+        std::string msg;\r
+};\r
+\r
+InitError::InitError():\r
+  exception(), msg(SDL_GetError()) {}\r
+InitError::InitError(const std::string& m):\r
+  exception(), msg(m) {}\r
+InitError::~InitError() throw() {}\r
+const char* InitError::what() const throw() {\r
+    return msg.c_str();\r
+}\r
+\r
+class SDL {\r
+    public:\r
+        SDL(Uint32 flags = 0) throw(InitError);\r
+        virtual ~SDL();\r
+};\r
+\r
+SDL::SDL(Uint32 flags) throw(InitError) {\r
+    if (SDL_Init(flags) != 0)\r
+        throw InitError();\r
+}\r
+\r
+SDL::~SDL() {\r
+    SDL_Quit();\r
+}\r
+\r
+/* ... */\r
+\r
+#include &lt;iostream&gt;\r
+\r
+int main(int argc, char **argv) {\r
+    try {\r
+        SDL sdl(SDL_INIT_VIDEO|SDL_INIT_TIMER);\r
+\r
+        /* ... */\r
+\r
+        return 0;\r
+    }\r
+\r
+    catch (const InitError& err) {\r
+        std::cerr\r
+            &lt;&lt; "SDL\82Ì\8f\89\8aú\89»\92\86\82É\83G\83\89\81[\82ª\94­\90\82µ\82½:  "\r
+            &lt;&lt; err.what() &lt;&lt; std::endl;\r
+    }\r
+\r
+    return 1;\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \83C\83x\83\93\83g\83n\83\93\83h\83\8b\83t\83@\83C\83\8bI/O, \82»\82µ\82Ä\83X\83\8c\83b\83h\83T\83u\83V\83X\83e\83\80\82Í\83f\83t\83H\83\8b\83g\82Å\8f\89\8aú\89»\82³\82ê\82é.\r
index b66c2a3..d81ab43 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«0, \83G\83\89\81[\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+/* \83W\83\87\83C\83X\83e\83B\83b\83N\82Æ\83r\83f\83I\82ð\95ª\82¯\82Ä\8f\89\8aú\89»\82·\82é */\r
+SDL_Init(SDL_INIT_VIDEO);\r
+\r
+SDL_Window* window = SDL_CreateWindow("A Window", \r
+    SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480,\r
+    SDL_WINDOW_FULLSCREEN);\r
+SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);\r
+\r
+/* \82±\82±\82Å\83r\83f\83I\82Ì\8f\88\97\9d\82ð\8ds\82¤ */\r
+\r
+/* \83W\83\87\83C\83X\83e\83B\83b\83N\83T\83u\83V\83X\83e\83\80\82ð\8f\89\8aú\89»\82·\82é */\r
+SDL_InitSubSystem(SDL_INIT_JOYSTICK);\r
+\r
+/* \82±\82±\82Å\83r\83f\83I\82Æ\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\8f\88\97\9d\82ð\8ds\82¤ */\r
+\r
+/* \97¼\95û\82Ì\83V\83X\83e\83\80\82ð\8fI\97¹\82·\82é */\r
+SDL_Quit();\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 <a href="SDL_Init.html">SDL_Init()</a>\82Å\8f\89\8aú\89»\82µ\82½\8cã\82Å\82à<a href="SDL_InitSubSystem.html">SDL_InitSubSystem()</a>\82Å\96¢\8f\89\8aú\89»\82Ì\83T\83u\83V\83X\83e\83\80\82ð\8f\89\8aú\89»\82·\82é\82±\82Æ\82ª\82Å\82«\82é.\r
index 1005cc5..2da31c2 100644 (file)
 \8ew\92è\82Ì\83W\83\87\83C\83X\83e\83B\83b\83N\82ª\83Q\81[\83\80\83R\83\93\83g\83\8d\81[\83\89\81[\83C\83\93\83^\81[\83t\83F\81[\83X\82É\91Î\89\9e\82µ\82Ä\82¢\82ê\82ÎSDL_TRUE, \91Î\89\9e\82µ\82Ä\82¢\82È\82¢\82Ü\82½\82Í\83f\83o\83C\83X\94Ô\8d\86\82ª\94Í\88Í\8aO\82Ì\82Æ\82«SDL_FALSE\82ð\96ß\82·.\r
 <h2>\8fÚ\8d×</h2>\r
 device_index\82Í<a href="SDL_JoystickOpen.html">SDL_JoystickOpen()</a>\82Ì\88ø\90\94\82Ìjoystick_index\82Æ\93¯\82\82Å\82 \82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+for (int i = 0; i &lt; SDL_NumJoysticks(); ++i) {\r
+    if (SDL_IsGameController(i)) {\r
+        printf("\83W\83\87\83C\83X\83e\83B\83b\83N %d \82Í\83Q\81[\83\80\83R\83\93\83g\83\8d\81[\83\89\81[\83C\83\93\83^\81[\83t\83F\81[\83X\82É\91Î\89\9e\82µ\82Ä\82¢\82é!\n", i);\r
+    }\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_GameControllerNameForIndex.html">SDL_GameControllerNameForIndex</a><br>\r
 <a href="SDL_GameControllerOpen.html">SDL_GameControllerOpen</a><br>\r
index ef663da..41efaef 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \97L\8cø\82Ì\82Æ\82«1, \96³\8cø\82Ì\82Æ\82«0, \8e¸\94s\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+printf("%d\n", SDL_JoystickEventState(SDL_QUERY));  /* 1\82ª\95\\8e¦\82³\82ê\82é */\r
+printf("%d\n", SDL_JoystickEventState(SDL_IGNORE)); /* 0\82ª\95\\8e¦\82³\82ê\82é */\r
+printf("%d\n", SDL_JoystickEventState(SDL_QUERY));  /* 0\82ª\95\\8e¦\82³\82ê\82é */\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \83W\83\87\83C\83X\83e\83B\83b\83N\83C\83x\83\93\83g\82ª\96³\8cø\82Ì\82Æ\82«\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\8fó\91Ô\82ð\93¾\82é\82É\82Í, <a href="SDL_JoystickUpdate.html">SDL_JoystickUpdate()</a>\82ð\8e©\95ª\82Å\8cÄ\82Ñ, \8fó\91Ô\82ð\8eè\93®\82Å\83`\83F\83b\83N\82·\82é\95K\97v\82ª\82 \82é.\r
index ff41c76..27db3a9 100644 (file)
 <p>\r
 \96ß\82è\92l\82Í-32768\81`32767\82Ì\94Í\88Í\82Å\82 \82é.\r
 </p>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+extern SDL_Joystick* joy1;\r
+Sint16 x_move, y_move;\r
+\r
+x_move = SDL_JoystickGetAxis(joy1, 0);\r
+y_move = SDL_JoystickGetAxis(joy1, 1);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 \8d¡\93ú\82Ì\83W\83\87\83C\83X\83e\83B\83b\83N\82Å\82Í, \92Ê\8fí, X\8e²\82ª0, Y\8e²\82ª1\82Å\82 \82é.\r
index fa60e0e..fe1f14b 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«0, \8e¸\94s\82Ì\82Æ\82«\95\89\82Ì\90\94\82Ì\83G\83\89\81[\83R\81[\83h\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+int delta_x, delta_y;\r
+SDL_Joystick *joy;\r
+.\r
+.\r
+.\r
+SDL_JoystickUpdate();\r
+if(SDL_JoystickGetBall(joy, 0, &delta_x, &delta_y)==-1)\r
+    printf("\83g\83\89\83b\83N\83{\81[\83\8b\93Ç\82Ý\8d\9e\82Ý\8e¸\94s!\n");\r
+printf("\83g\83\89\83b\83N\83{\81[\83\8b \88Ú\93®\97Ê- X:%d, Y:%d\n", delta_x, delta_y);\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \83g\83\89\83b\83N\83{\81[\83\8b\82ª\96ß\82·\82Ì\82Í, \8dÅ\8cã\82É<a href="SDL_JoystickGetBall.html">SDL_JoystickGetBall()</a>\82ð\8cÄ\82ñ\82Å\82©\82ç\82Ì\91\8a\91Î\92l\82Ì\82Ý\82Å\82 \82é.\r
 \82»\82Ì\88Ú\93®\97Ê\82Ídx\82Ædy\82É\91ã\93ü\82³\82ê\82é.\r
index 206f119..272e683 100644 (file)
 \91I\91ð\82µ\82½\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\8eÀ\91\95\82©\82ç\93¾\82½\96¼\91O\82ð\96ß\82·.\r
 \96¼\91O\82ª\8c©\82Â\82©\82ç\82È\82¯\82ê\82ÎNULL\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+/* \91S\82Ä\82Ì\90Ú\91±\82³\82ê\82½\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\96¼\91O\82ð\95\\8e¦\82·\82é */\r
+int num_joy, i;\r
+num_joy = SDL_NumJoysticks();\r
+printf("%d \82Ì\83W\83\87\83C\83X\83e\83B\83b\83N\82ð\8c\9f\92m\82µ\82½\n", num_joy);\r
+for(i = 0; i &lt; num_joy; i++)\r
+{\r
+    SDL_Joystick *joystick = SDL_JoystickOpen(i);\r
+    printf("%s\n", SDL_JoystickName(joystick));\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_JoystickOpen.html">SDL_JoystickOpen</a><br>\r
 <a href="SDL_JoystickNameForIndex.html">SDL_JoystickNameForIndex</a><br>\r
index 7a87ce3..5d88521 100644 (file)
 \91I\91ð\82µ\82½\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\8eÀ\91\95\82©\82ç\93¾\82½\96¼\91O\82ð\96ß\82·.\r
 \96¼\91O\82ª\8c©\82Â\82©\82ç\82È\82¯\82ê\82ÎNULL\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+/* \91S\82Ä\82Ì\90Ú\91±\82³\82ê\82½\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\96¼\91O\82ð\95\\8e¦\82·\82é */\r
+int num_joy, i;\r
+num_joy = SDL_NumJoysticks();\r
+printf("%d \82Ì\83W\83\87\83C\83X\83e\83B\83b\83N\82ð\8c\9f\92m\82µ\82½\n", num_joy);\r
+for (i = 0; i &lt; num_joy; ++i) {\r
+    printf("%s\n", SDL_JoystickNameForIndex(i));\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 \82±\82Ì\8aÖ\90\94\82Í\83W\83\87\83C\83X\83e\83B\83b\83N\82ð\8aJ\82­\91O\82É\8cÄ\82Ô\82±\82Æ\82ª\82Å\82«\82é.\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
index 72720c7..13e8d9f 100644 (file)
 <h2>\96ß\82è\92l</h2>\r
 \90¬\8c÷\82Ì\82Æ\82«\83W\83\87\83C\83X\83e\83B\83b\83N\82Ì\8e¯\95Ê\8eq, \8e¸\94s\82Ì\82Æ\82«NULL\82ð\96ß\82·.\r
 <a href="SDL_GetError.html">SDL_GetError()</a>\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+SDL_Joystick *joy;\r
+\r
+// \83W\83\87\83C\83X\83e\83B\83b\83N\83T\83u\83V\83X\83e\83\80\82ð\8f\89\8aú\89»\82·\82é\r
+SDL_InitSubSystem(SDL_INIT_JOYSTICK);\r
+\r
+// \83W\83\87\83C\83X\83e\83B\83b\83N\82ª\91\8dÝ\82·\82é\82©\83`\83F\83b\83N\82·\82é\r
+if (SDL_NumJoysticks() &gt; 0) {\r
+    // \83W\83\87\83C\83X\83e\83B\83b\83N\82ð\8aJ\82­\r
+    joy = SDL_JoystickOpen(0);\r
+\r
+    if (joy) {\r
+        printf("\83W\83\87\83C\83X\83e\83B\83b\83N 0 \82ð\8aJ\82¢\82½\n");\r
+        printf("\96¼\91O: %s\n", SDL_JoystickNameForIndex(0));\r
+        printf("\8e²\82Ì\90\94: %d\n", SDL_JoystickNumAxes(joy));\r
+        printf("\83{\83^\83\93\82Ì\90\94: %d\n", SDL_JoystickNumButtons(joy));\r
+        printf("\83{\81[\83\8b\82Ì\90\94: %d\n", SDL_JoystickNumBalls(joy));\r
+    } else {\r
+        printf("\83W\83\87\83C\83X\83e\83B\83b\83N 0 \82ð\8aJ\82¯\82È\82©\82Á\82½\n");\r
+    }\r
+\r
+    // \8aJ\82¢\82½\82È\82ç\95Â\82\82é\r
+    if (SDL_JoystickGetAttached(joy)) {\r
+        SDL_JoystickClose(joy);\r
+    }\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <p>\r
 device_index\82ÍSDL\82É\82æ\82Á\82Ä\94F\8e¯\82³\82ê\82½N\94Ô\96Ú\82Ì\83W\83\87\83C\83X\83e\83B\83b\83N\82ð\88Ó\96¡\82·\82é.\r