OSDN Git Service

SDL_atomic_t サンプルコードを修正 https://wiki.libsdl.org/SDL_atomic_t?action=diff&rev1=3&rev2=4
[sdl2referencejp/sdl2referencejp.git] / SDL_CreateRGBSurfaceFrom.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r
2 <html lang="ja-JP">\r
3 <head>\r
4 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">\r
5 <meta http-equiv="Content-Style-Type" content="text/css">\r
6 <meta name="keywords" content="Simple Directmedia Layer SDL2.0">\r
7 <link rel="top" href="index.html" title="\83z\81[\83\80">\r
8 <link rel="parent" href="CategorySurface.html" title="1\82Â\8fã">\r
9 <title>SDL_CreateRGBSurfaceFrom</title>\r
10 </head>\r
11 <body>\r
12 <a href="index.html">\96Ú\8e\9f</a> - <a href="ApiByCategory.html">API(\8b@\94\\95Ê)</a> - <a href="CategorySurface.html">\83T\81[\83t\83F\83C\83X\82Ì\90\90¬\82Æ\92P\8f\83\82È\95`\89æ</a> - SDL_CreateRGBSurfaceFrom\r
13 <hr>\r
14 <h1>SDL_CreateRGBSurfaceFrom</h1>\r
15 \8aù\91\82Ì\83s\83N\83Z\83\8b\83f\81[\83^\82©\82ç\90V\82µ\82¢RGB\83T\81[\83t\83F\83C\83X\82ð\90\90¬\82·\82é\r
16 <h2>\8d\\95¶</h2>\r
17 <code>SDL_Surface* SDL_CreateRGBSurfaceFrom(void* pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)</code>\r
18 <h2>\88ø\90\94</h2>\r
19 <table border="1" summary="SDL_CreateRGBSurfaceFrom">\r
20 <tr><td>pixels</td><td>\8aù\91\82Ì\83s\83N\83Z\83\8b\83f\81[\83^\82Ö\82Ì\83|\83C\83\93\83^</td></tr>\r
21 <tr><td>width</td><td>\83T\81[\83t\83F\83C\83X\82Ì\95\9d</td></tr>\r
22 <tr><td>height</td><td>\83T\81[\83t\83F\83C\83X\82Ì\8d\82\82³</td></tr>\r
23 <tr><td>depth</td><td>\83T\81[\83t\83F\83C\83X\82Ì\83r\83b\83g\90[\93x (\8fÚ\8d×\82ð\8eQ\8fÆ\82·\82é\82±\82Æ)</td></tr>\r
24 <tr><td>pitch</td><td>\90\85\95½\95û\8cü\82Ì\83o\83C\83g\90\94</td></tr>\r
25 <tr><td>Rmask</td><td>\83s\83N\83Z\83\8b\82Ì\90Ô\83}\83X\83N</td></tr>\r
26 <tr><td>Gmask</td><td>\83s\83N\83Z\83\8b\82Ì\97Î\83}\83X\83N</td></tr>\r
27 <tr><td>Bmask</td><td>\83s\83N\83Z\83\8b\82Ì\90Â\83}\83X\83N</td></tr>\r
28 <tr><td>Amask</td><td>\83s\83N\83Z\83\8b\82Ì\83¿\83}\83X\83N</td></tr>\r
29 </table>\r
30 <h2>\96ß\82è\92l</h2>\r
31 \90¬\8c÷\82Ì\82Æ\82«\90\90¬\82³\82ê\82½<a href="SDL_Surface.html">SDL_Surface</a>, \8e¸\94s\82Ì\82Æ\82«NULL\82ð\96ß\82·.\r
32 <a href="SDL_GetError.html">SDL_GetError()</a>\82ð\8cÄ\82ñ\82Å\8fÚ\8d×\82ð\92m\82é\82±\82Æ\82ª\82Å\82«\82é.\r
33 <h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
34 <p>\r
35 <code>\r
36 <pre>\r
37 // stb_image.h\82ð\8eg\82Á\82Ä\93Ç\82Ý\8d\9e\82ñ\82¾\89æ\91\9c\83t\83@\83C\83\8b\82©\82çSDL_Surface*\82ð\90\90¬\82·\82é\83T\83\93\83v\83\8b\r
38 // (https://github.com/nothings/stb/)\r
39 \r
40 // stb_image\82É\97v\8b\81\82·\82é\8fo\97Í\82Ì\83J\83\89\81[\8c`\8e®\r
41 // \83¿\83`\83\83\83l\83\8b\82ð\8b\81\82ß\82È\82¢/\95K\97v\82È\82¢\82È\82ç\82ÎSTBI_rgb\82ð\8eg\82¤\82±\82Æ\r
42 int req_format = STBI_rgb_alpha;\r
43 int width, height, orig_format;\r
44 unsigned char* data = stbi_load("./test.png", &width, &height, &orig_format, req_format);\r
45 if(data == NULL) {\r
46   SDL_Log("\89æ\91\9c\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82½: %s", stbi_failure_reason());\r
47   exit(1);\r
48 }\r
49 \r
50 // RGB(A)\83o\83C\83g\94z\97ñ\82Ì\82½\82ß\82Ì\83s\83N\83Z\83\8b\8c`\8e®\82Ì\83J\83\89\81[\83}\83X\83N\82ð\90Ý\92è\82·\82é\r
51 // \82±\82ê\82ÍSTBI_rgb (3)\82ÆSTBI_rgb_alpha (4)\82Ì\82Ý\91Î\89\9e\82µ\82Ä\82¢\82é!\r
52 Uint32 rmask, gmask, bmask, amask;\r
53 #if SDL_BYTEORDER == SDL_BIG_ENDIAN\r
54   int shift = (req_format == STBI_rgb) ? 8 : 0;\r
55   rmask = 0xff000000 >> shift;\r
56   gmask = 0x00ff0000 >> shift;\r
57   bmask = 0x0000ff00 >> shift;\r
58   amask = 0x000000ff >> shift;\r
59 #else // little endian, like x86\r
60   rmask = 0x000000ff;\r
61   gmask = 0x0000ff00;\r
62   bmask = 0x00ff0000;\r
63   amask = (req_format == STBI_rgb) ? 0 : 0xff000000;\r
64 #endif\r
65 \r
66 int depth, pitch;\r
67 if (req_format == STBI_rgb) {\r
68   depth = 24;\r
69   pitch = 3*width; // 1\83s\83N\83Z\83\8b\82 \82½\82è3byte * 1\8ds\82Ì\83s\83N\83Z\83\8b\90\94\r
70 } else { // STBI_rgb_alpha (RGBA)\r
71   depth = 32;\r
72   pitch = 4*width;\r
73 }\r
74 \r
75 SDL_Surface* surf = SDL_CreateRGBSurfaceFrom((void*)data, width, height, depth, pitch,\r
76                                              rmask, gmask, bmask, amask);\r
77 \r
78 if (surf == NULL) {\r
79   SDL_Log("\83T\81[\83t\83F\83C\83X\82Ì\90\90¬\82É\8e¸\94s\82µ\82½: %s", SDL_GetError());\r
80   stbi_image_free(data);\r
81   exit(1);\r
82 }\r
83 \r
84 // ... \82±\82±\82Å\83T\81[\83t\83F\83C\83X\82ð\8eg\82¤ ...\r
85 // ...\r
86 \r
87 // \83T\81[\83t\83F\83C\83X\82ª\95K\97v\82È\82­\82È\82Á\82½\82ç\89ð\95ú\82·\82é...\r
88 SDL_FreeSurface(surf);\r
89 // .. *\82»\82µ\82Ä* \83T\81[\83t\83F\83C\83X\82Å\8eg\82Á\82½\83f\81[\83^\82à!\r
90 stbi_image_free(data);\r
91 </pre>\r
92 </code>\r
93 </p>\r
94 <h2>\8fÚ\8d×</h2>\r
95 <p>\r
96 depth\82ª4\82Ü\82½\82Í8\82Ì\82Æ\82«, \8bó\82Ì\83p\83\8c\83b\83g\82ª\90\90¬\82³\82ê\82é.\r
97 depth\82ª8\82ð\92´\82¦\82é\82Æ\82«, \88ø\90\94\82Ì[RGBA]mask\82ð\8eg\82Á\82½\83s\83N\83Z\83\8b\8c`\8e®\82ª\90Ý\92è\82³\82ê\82é.\r
98 </p>\r
99 <p>\r
100 [RGBA]mask\82Í\83s\83N\83Z\83\8b\82Ì\90F\82ð\8ew\92è\82·\82é\82½\82ß\82Ì\83r\83b\83g\83}\83X\83N\82Æ\82µ\82Ä\8eg\82í\82ê\82é.\r
101 \97á\82¦\82Î, Rmask\82ªFF0000\82È\82ç\82Î, \90Ô\82Ì\83f\81[\83^\82Í\8dÅ\8fã\88Ê\83o\83C\83g\82É\8ai\94[\82³\82ê\82é.\r
102 [RGB]mask\82ð0\82É\82·\82é\82Æ, \83r\83b\83g\90[\93x\82É\8aî\82Ã\82¢\82½\83f\83t\83H\83\8b\83g\82Ì\92l\82É\82È\82é.\r
103 (\97á: <code>SDL_CreateRGBSurface(0,w,h,32,0,0,0,0);</code>)\r
104 \82µ\82©\82µ, Amask\82ð0\82É\82·\82é\82Æ, \83¿\83}\83X\83N\82Í0\82É\82È\82é.\r
105 </p>\r
106 <p>\r
107 \83¿\83}\83X\83N\95t\82«\83T\81[\83t\83F\83C\83X\82Ì\83u\83\8c\83\93\83h\83\82\81[\83h\82Ì\8f\89\8aú\92l\82Í <code>SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND)</code> \82Å\82 \82é.\r
108 <a href="SDL_SetSurfaceBlendMode.html">SDL_SetSurfaceBlendMode()</a>\82Å\95Ê\82Ì\83u\83\8c\83\93\83h\83\82\81[\83h\82É\95Ï\82¦\82é\82±\82Æ\82ª\82Å\82«\82é.\r
109 </p>\r
110 <p>\r
111 \83s\83N\83Z\83\8b\83f\81[\83^\82Í\90V\82½\82É\90\90¬\82³\82ê\82È\82¢.\r
112 \83s\83N\83Z\83\8b\83f\81[\83^\82Í\8aÇ\97\9d\8aO\82Å\82 \82é.\r
113 \82Â\82Ü\82è, \83T\81[\83t\83F\83C\83X\82ð\89ð\95ú\82µ\82½\8cã\82Í\83s\83N\83Z\83\8b\83f\81[\83^\82à\89ð\95ú\82·\82é\95K\97v\82ª\82 \82é.\r
114 </p>\r
115 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
116 <a href="SDL_CreateRGBSurface.html">SDL_CreateRGBSurface</a><br>\r
117 <a href="SDL_CreateRGBSurfaceWithFormatFrom.html">SDL_CreateRGBSurfaceWithFormatFrom</a><br>\r
118 <a href="SDL_FreeSurface.html">SDL_FreeSurface</a><br>\r
119 <h2>SDL Wiki\82Ö\82Ì\83\8a\83\93\83N</h2>\r
120 <a href="https://wiki.libsdl.org/SDL_CreateRGBSurfaceFrom">SDL_CreateRGBSurfaceFrom - SDL Wiki</a>\r
121 <hr>\r
122 </body>\r
123 </html>\r