1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
\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="CategoryRender.html" title="1
\82Â
\8fã">
\r
9 <title>SDL_GL_BindTexture</title>
\r
12 <a href="index.html">
\96Ú
\8e\9f</a> - <a href="ApiByCategory.html">API(
\8b@
\94\
\95Ê)</a> - <a href="CategoryRender.html">2D
\83\8c\83\93\83_
\83\8a\83\93\83O</a> - SDL_GL_BindTexture
\r
14 <h1>SDL_GL_BindTexture</h1>
\r
15 OpenGL
\83v
\83\8a\83~
\83e
\83B
\83u
\82ð
\92¼
\90Ú
\83\8c\83\93\83_
\83\8a\83\93\83O
\82·
\82é
\82Æ
\82«,
\82»
\82ê
\82ðOpenGL
\83C
\83\93\83X
\83g
\83\89\83N
\83V
\83\87\83\93\82Å
\8eg
\82¤
\82½
\82ß
\82ÉOpenGL/ES/ES2
\83e
\83N
\83X
\83`
\83\83\82ð
\83J
\83\8c\83\93\83g
\83R
\83\93\83e
\83L
\83X
\83g
\82É
\83o
\83C
\83\93\83h
\82·
\82é
\r
17 <code>int SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh)</code>
\r
19 <table border="1" summary="SDL_GL_BindTexture">
\r
20 <tr><td>texture</td><td>OpenGL/ES/ES2
\83J
\83\8c\83\93\83g
\83R
\83\93\83e
\83L
\83X
\83g
\82É
\83o
\83C
\83\93\83h
\82·
\82é
\83e
\83N
\83X
\83`
\83\83</td></tr>
\r
21 <tr><td>texw</td><td>
\83e
\83N
\83X
\83`
\83\83\82Ì
\95\9d\82ð
\91ã
\93ü
\82·
\82éfloat
\8c^
\82Ì
\95Ï
\90\94\82Ö
\82Ì
\83|
\83C
\83\93\83^,
\95K
\97v
\82È
\82¢
\8fê
\8d\87\82ÍNULL</td></tr>
\r
22 <tr><td>texh</td><td>
\83e
\83N
\83X
\83`
\83\83\82Ì
\8d\82\82³
\82ð
\91ã
\93ü
\82·
\82éfloat
\8c^
\82Ì
\95Ï
\90\94\82Ö
\82Ì
\83|
\83C
\83\93\83^,
\95K
\97v
\82È
\82¢
\8fê
\8d\87\82ÍNULL</td></tr>
\r
24 <h2>
\96ß
\82è
\92l</h2>
\r
25 \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
26 <a href="SDL_GetError.html">SDL_GetError()</a>
\82Å
\8fÚ
\8d×
\82ð
\92m
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82é.
\r
27 <h2>
\83T
\83\93\83v
\83\8b\83R
\81[
\83h</h2>
\r
29 \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
35 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
37 // 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
38 render_data.glUseProgramObjectARB(0);
\r
39 render_data.glPushMatrix();
\r
40 render_data.glTranslatef(translation.x, translation.y, 0);
\r
42 std::vector<Rocket::Core::Vector2f> Positions(num_vertices);
\r
43 std::vector<Rocket::Core::Colourb> Colors(num_vertices);
\r
44 std::vector<Rocket::Core::Vector2f> TexCoords(num_vertices);
\r
47 SDL_Texture* sdl_texture = NULL;
\r
49 render_data.glEnableClientState(GL_TEXTURE_COORD_ARRAY);
\r
50 sdl_texture = (SDL_Texture *) texture;
\r
51 SDL_GL_BindTexture(sdl_texture, &texw, &texh);
\r
54 for (int i = 0; i < num_vertices; i++) {
\r
55 Positions[i] = vertices[i].position;
\r
56 Colors[i] = vertices[i].colour;
\r
58 TexCoords[i].x = vertices[i].tex_coord.x * texw;
\r
59 TexCoords[i].y = vertices[i].tex_coord.y * texh;
\r
61 TexCoords[i] = vertices[i].tex_coord;
\r
65 render_data.glEnableClientState(GL_VERTEX_ARRAY);
\r
66 render_data.glEnableClientState(GL_COLOR_ARRAY);
\r
67 render_data.glVertexPointer(2, GL_FLOAT, 0, &Positions[0]);
\r
68 render_data.glColorPointer(4, GL_UNSIGNED_BYTE, 0, &Colors[0]);
\r
69 render_data.glTexCoordPointer(2, GL_FLOAT, 0, &TexCoords[0]);
\r
72 render_data.glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
\r
73 render_data.glEnable(GL_BLEND);
\r
74 render_data.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
\r
75 render_data.glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_INT, indices);
\r
76 render_data.glDisableClientState(GL_VERTEX_ARRAY);
\r
77 render_data.glDisableClientState(GL_COLOR_ARRAY);
\r
81 SDL_GL_UnbindTexture(sdl_texture);
\r
82 render_data.glDisableClientState(GL_TEXTURE_COORD_ARRAY);
\r
85 render_data.glColor4f(1.0, 1.0, 1.0, 1.0);
\r
86 render_data.glPopMatrix();
\r
95 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
97 render_data.glPushMatrix();
\r
98 render_data.glTranslatef(translation.x, translation.y, 0);
\r
100 std::vector<Rocket::Core::Vector2f> Positions(num_vertices);
\r
101 std::vector<Rocket::Core::Colourb> Colors(num_vertices);
\r
102 std::vector<Rocket::Core::Vector2f> TexCoords(num_vertices);
\r
105 SDL_Texture* sdl_texture = NULL;
\r
107 render_data.glEnableClientState(GL_TEXTURE_COORD_ARRAY);
\r
108 sdl_texture = (SDL_Texture *) texture;
\r
109 SDL_GL_BindTexture(sdl_texture, &texw, &texh);
\r
112 for (int i = 0; i < num_vertices; i++) {
\r
113 Positions[i] = vertices[i].position;
\r
114 Colors[i] = vertices[i].colour;
\r
116 TexCoords[i].x = vertices[i].tex_coord.x * texw;
\r
117 TexCoords[i].y = vertices[i].tex_coord.y * texh;
\r
119 TexCoords[i] = vertices[i].tex_coord;
\r
123 unsigned short newIndicies[num_indices];
\r
124 for (int i = 0; i < num_indices; i++) {
\r
125 newIndicies[i] = (unsigned short) indices[i];
\r
128 render_data.glEnableClientState(GL_VERTEX_ARRAY);
\r
129 render_data.glEnableClientState(GL_COLOR_ARRAY);
\r
130 render_data.glVertexPointer(2, GL_FLOAT, 0, &Positions[0]);
\r
131 render_data.glColorPointer(4, GL_UNSIGNED_BYTE, 0, &Colors[0]);
\r
132 render_data.glTexCoordPointer(2, GL_FLOAT, 0, &TexCoords[0]);
\r
134 render_data.glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
\r
135 render_data.glEnable(GL_BLEND);
\r
136 render_data.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
\r
137 render_data.glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, newIndicies);
\r
138 render_data.glDisableClientState(GL_VERTEX_ARRAY);
\r
139 render_data.glDisableClientState(GL_COLOR_ARRAY);
\r
140 render_data.glDisableClientState(GL_TEXTURE_COORD_ARRAY);
\r
143 SDL_GL_UnbindTexture(sdl_texture);
\r
144 render_data.glDisableClientState(GL_TEXTURE_COORD_ARRAY);
\r
147 render_data.glColor4f(1.0, 1.0, 1.0, 1.0);
\r
148 render_data.glPopMatrix();
\r
157 SDL_Texture* sdl_texture = NULL;
\r
158 if(texture) render_data.glUseProgram(program_texture_id);
\r
159 else render_data.glUseProgram(program_color_id);
\r
162 SDL_RenderGetViewport(renderer, &rvp);
\r
164 GLfloat projection[4][4];
\r
166 //
\95½
\8ds
\93\8a\89e
\82Ì
\8f\80\94õ
\82ð
\82·
\82é
\r
167 projection[0][0] = 2.0f / rvp.w;
\r
168 projection[0][1] = 0.0f;
\r
169 projection[0][2] = 0.0f;
\r
170 projection[0][3] = 0.0f;
\r
171 projection[1][0] = 0.0f;
\r
172 //if (renderer-;>target) {
\r
173 // projection[1][1] = 2.0f / height;
\r
175 projection[1][1] = -2.0f / rvp.h;
\r
177 projection[1][2] = 0.0f;
\r
178 projection[1][3] = 0.0f;
\r
179 projection[2][0] = 0.0f;
\r
180 projection[2][1] = 0.0f;
\r
181 projection[2][2] = 0.0f;
\r
182 projection[2][3] = 0.0f;
\r
183 projection[3][0] = -1.0f;
\r
184 //if (renderer->target) {
\r
185 // projection[3][1] = -1.0f;
\r
187 projection[3][1] = 1.0f;
\r
189 projection[3][2] = 0.0f;
\r
190 projection[3][3] = 1.0f;
\r
192 //
\93\8a\89e
\8ds
\97ñ
\82ð
\90Ý
\92è
\82·
\82é
\r
194 render_data.glUniformMatrix4fv(u_texture_projection, 1, GL_FALSE, (GLfloat *)projection);
\r
195 render_data.glUniform2f(u_texture_translation, translation.x, translation.y);
\r
197 render_data.glUniformMatrix4fv(u_color_projection, 1, GL_FALSE, (GLfloat *)projection);
\r
198 render_data.glUniform2f(u_color_translation, translation.x, translation.y);
\r
201 render_data.glEnable(GL_BLEND);
\r
202 render_data.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
\r
206 unsigned short newIndicies[num_indices];
\r
207 for (int i = 0; i < num_indices; i++) {
\r
208 newIndicies[i] = (unsigned short) indices[i];
\r
211 glVertexAttribPointer(ROCKETGLUE_ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(Rocket::Core::Vertex), &vertices[0].position);
\r
212 glVertexAttribPointer(ROCKETGLUE_ATTRIBUTE_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(Rocket::Core::Vertex), &vertices[0].colour);
\r
213 render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_POSITION);
\r
214 render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_TEXCOORD);
\r
215 render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_COLOR);
\r
218 sdl_texture = (SDL_Texture *) texture;
\r
219 SDL_GL_BindTexture(sdl_texture, &texw, &texh);
\r
220 render_data.glUniform1i(u_texture, 0);
\r
221 glVertexAttribPointer(ROCKETGLUE_ATTRIBUTE_TEXCOORD, 2, GL_FLOAT, GL_FALSE, sizeof(Rocket::Core::Vertex), &vertices[0].tex_coord);
\r
223 render_data.glActiveTexture(GL_TEXTURE0);
\r
224 render_data.glDisable(GL_TEXTURE_2D);
\r
225 render_data.glDisableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_TEXCOORD);
\r
228 render_data.glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, newIndicies);
\r
230 /* 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
231 render_data.glDisableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_COLOR);
\r
233 /* 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
234 ROCKETGLUE_ATTRIBUTE_POSITION (0)
\82ÆROCKETGLUE_ATTRIBUTE_TEXCOORD (1)
\82ð
\97£
\82· */
\r
235 if(sdl_texture) SDL_GL_UnbindTexture(sdl_texture);
\r
236 else render_data.glEnableVertexAttribArray(ROCKETGLUE_ATTRIBUTE_TEXCOORD);
\r
238 /*
\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
239 \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
240 render_data.glDisable(GL_BLEND);
\r
241 SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
\r
242 SDL_RenderDrawPoint(renderer, -1, -1);
\r
248 \92l
\82ª
\93¾
\82ç
\82ê
\82½
\82È
\82ç, <strong>texw</strong>
\82Æ<strong>texh</strong>
\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
249 \82Ù
\82Æ
\82ñ
\82Ç
\82Ì
\8fê
\8d\87,
\97¼
\95û
\82Ì
\92l
\82Í1.0
\82Å
\82 \82é.
\r
250 \82µ
\82©
\82µ, GL_ARB_texture_rectangle
\8ag
\92£
\82É
\91Î
\89\9e\82µ
\82½
\8aÂ
\8b«
\82Å
\82Í,
\82±
\82ê
\82ç
\82Ì
\92l
\82Í
\83e
\83N
\83X
\83`
\83\83\82Ì
\90¶
\90¬
\82Ì
\82½
\82ß
\82É
\8eg
\82í
\82ê
\82½
\8eÀ
\8dÛ
\82Ì
\83s
\83N
\83Z
\83\8b\90\94\82Ì
\95\9d\82Æ
\8d\82\82³
\82Å
\82 \82é.
\r
251 \82±
\82Ì
\82±
\82Æ
\82ÍOpenGL
\82É
\83e
\83N
\83X
\83`
\83\83\82Ì
\8dÀ
\95W
\82ð
\97^
\82¦
\82é
\8fê
\8d\87\82É
\8dl
\97¶
\82·
\82é
\95K
\97v
\82ª
\82 \82é.
\r
254 <a href="SDL_Texture.html">SDL_Texture</a>
\82ð
\90¶
\90¬
\82·
\82é
\82½
\82ß
\82É
\82Í
\83\8c\83\93\83_
\83\89\81[
\82ª
\95K
\97v
\82Å
\82 \82é.
\82æ
\82Á
\82Ä,
\r
255 \82±
\82Ì
\8aÖ
\90\94\82Å
\82Í
\r
256 \82 \82È
\82½
\8e©
\90g
\82ÌOpenGL
\83R
\83\93\83e
\83L
\83X
\83g
\82Å
\82Í
\82È
\82, <a href="SDL_CreateRenderer.html">SDL_CreateRenderer()</a>
\82Å
\90¶
\90¬
\82µ
\82½
\88Ã
\96Ù
\82ÌOpenGL
\83R
\83\93\83e
\83L
\83X
\83g
\82ð
\8eg
\82¤
\82µ
\82©
\82È
\82¢.
\r
257 \82à
\82µ
\82 \82È
\82½
\82ÌOpenGL
\83R
\83\93\83e
\83L
\83X
\83g
\82ð
\88µ
\82¤
\95K
\97v
\82ª
\82 \82é
\82È
\82ç
\82Î,
\83e
\83N
\83X
\83`
\83\83\82ð
\93Ç
\82Ý
\8d\9e\82Þ
\83\81\83\
\83b
\83h
\82ð
\8e©
\95ª
\8e©
\90g
\82Å
\8f\91\82©
\82È
\82¯
\82ê
\82Î
\82È
\82ç
\82È
\82¢.
\r
260 \82³
\82ç
\82É, SDL
\82ÍRGB
\83e
\83N
\83X
\83`
\83\83\82ðBGR
\8f\87(
\82Â
\82Ü
\82è
\8bt
\82É
\82µ
\82Ä)
\83A
\83b
\83v
\83\8d\81[
\83h
\82µ,
\83V
\83F
\81[
\83_
\81[
\82Ì
\92i
\8aK
\82Å
\83J
\83\89\81[
\83`
\83\83\83l
\83\8b\82ð
\95À
\82Ñ
\91Ö
\82¦
\82é.
\r
261 \82æ
\82Á
\82Ä,
\83A
\83b
\83v
\83\8d\81[
\83h
\82³
\82ê
\82½
\83e
\83N
\83X
\83`
\83\83\82Í
\83J
\83\89\81[
\83`
\83\83\83l
\83\8b\82ª
\8bt
\82É
\82È
\82Á
\82Ä
\82¢
\82é
\82Ì
\82Å
\92\8d\88Ó
\82·
\82é
\82±
\82Æ.
\r
263 <h2>
\83o
\81[
\83W
\83\87\83\93</h2>
\r
267 <h2>
\8aÖ
\98A
\8d\80\96Ú(
\8aÖ
\90\94)</h2>
\r
268 <a href="SDL_GL_MakeCurrent.html">SDL_GL_MakeCurrent</a><br>
\r
269 <a href="SDL_GL_UnbindTexture.html">SDL_GL_UnbindTexture</a><br>
\r
270 <h2>SDL Wiki
\82Ö
\82Ì
\83\8a\83\93\83N</h2>
\r
271 <a href="https://wiki.libsdl.org/SDL_GL_BindTexture">SDL_GL_BindTexture - SDL Wiki</a>
\r