changeset 15760 | ff1432e873bd |
parent 15286 | 16bd389fc735 |
child 15761 | e7eb0cd5b0e4 |
15759:c929e25a7da2 | 15760:ff1432e873bd |
---|---|
4 |
4 |
5 use super::{ |
5 use super::{ |
6 camera::Camera, |
6 camera::Camera, |
7 gl::{ |
7 gl::{ |
8 Buffer, InputElement, InputFormat, InputLayout, PipelineState, Shader, Texture2D, |
8 Buffer, InputElement, InputFormat, InputLayout, PipelineState, Shader, Texture2D, |
9 VariableBinding, |
9 TextureDataType, TextureFilter, TextureFormat, TextureInternalFormat, VariableBinding, |
10 }, |
10 }, |
11 }; |
11 }; |
12 |
|
13 use std::num::NonZeroU32; |
|
12 |
14 |
13 // TODO: temp |
15 // TODO: temp |
14 const VERTEX_SHADER: &'static str = r#" |
16 const VERTEX_SHADER: &'static str = r#" |
15 #version 150 |
17 #version 150 |
16 |
18 |
162 let offset = x * tw * bpp + y * th * lw * bpp; |
164 let offset = x * tw * bpp + y * th * lw * bpp; |
163 |
165 |
164 let data = unsafe { &land.as_bytes()[offset..] }; |
166 let data = unsafe { &land.as_bytes()[offset..] }; |
165 let stride = land.width(); |
167 let stride = land.width(); |
166 |
168 |
167 (data, stride as u32) |
169 (data, NonZeroU32::new(stride as u32)) |
168 }; |
170 }; |
169 |
171 |
170 let texture_index = if idx >= self.textures.len() { |
172 let texture_index = if idx >= self.textures.len() { |
171 let texture = Texture2D::with_data( |
173 let texture = Texture2D::with_data( |
172 data, |
174 data, |
173 stride, |
175 stride, |
174 self.tile_size, |
176 self.tile_size, |
175 gl::RGBA8, |
177 TextureInternalFormat::Rgba8, |
176 gl::RGBA, |
178 TextureFormat::Rgba, |
177 gl::UNSIGNED_BYTE, |
179 TextureDataType::UnsignedByte, |
178 gl::NEAREST, |
180 TextureFilter::Nearest, |
179 ); |
181 ); |
180 |
182 |
181 let texture_index = self.textures.len(); |
183 let texture_index = self.textures.len(); |
182 self.textures.push(texture); |
184 self.textures.push(texture); |
183 |
185 |
187 |
189 |
188 self.textures[idx].update( |
190 self.textures[idx].update( |
189 texture_region, |
191 texture_region, |
190 data, |
192 data, |
191 stride, |
193 stride, |
192 gl::RGBA, |
194 TextureFormat::Rgba, |
193 gl::UNSIGNED_BYTE, |
195 TextureDataType::UnsignedByte, |
194 ); |
196 ); |
195 idx |
197 idx |
196 }; |
198 }; |
197 |
199 |
198 let tile = MapTile { |
200 let tile = MapTile { |