Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(295)

Side by Side Diff: Source/core/html/canvas/WebGLTexture.cpp

Issue 106503003: Changed GL enums from GraphicsContext3D to standard versions (Take 2) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 21 matching lines...) Expand all
32 namespace WebCore { 32 namespace WebCore {
33 33
34 PassRefPtr<WebGLTexture> WebGLTexture::create(WebGLRenderingContext* ctx) 34 PassRefPtr<WebGLTexture> WebGLTexture::create(WebGLRenderingContext* ctx)
35 { 35 {
36 return adoptRef(new WebGLTexture(ctx)); 36 return adoptRef(new WebGLTexture(ctx));
37 } 37 }
38 38
39 WebGLTexture::WebGLTexture(WebGLRenderingContext* ctx) 39 WebGLTexture::WebGLTexture(WebGLRenderingContext* ctx)
40 : WebGLSharedObject(ctx) 40 : WebGLSharedObject(ctx)
41 , m_target(0) 41 , m_target(0)
42 , m_minFilter(GraphicsContext3D::NEAREST_MIPMAP_LINEAR) 42 , m_minFilter(GL_NEAREST_MIPMAP_LINEAR)
43 , m_magFilter(GraphicsContext3D::LINEAR) 43 , m_magFilter(GL_LINEAR)
44 , m_wrapS(GraphicsContext3D::REPEAT) 44 , m_wrapS(GL_REPEAT)
45 , m_wrapT(GraphicsContext3D::REPEAT) 45 , m_wrapT(GL_REPEAT)
46 , m_isNPOT(false) 46 , m_isNPOT(false)
47 , m_isCubeComplete(false) 47 , m_isCubeComplete(false)
48 , m_isComplete(false) 48 , m_isComplete(false)
49 , m_needToUseBlackTexture(false) 49 , m_needToUseBlackTexture(false)
50 , m_isFloatType(false) 50 , m_isFloatType(false)
51 , m_isHalfFloatType(false) 51 , m_isHalfFloatType(false)
52 { 52 {
53 ScriptWrappable::init(this); 53 ScriptWrappable::init(this);
54 setObject(ctx->graphicsContext3D()->createTexture()); 54 setObject(ctx->graphicsContext3D()->createTexture());
55 } 55 }
56 56
57 WebGLTexture::~WebGLTexture() 57 WebGLTexture::~WebGLTexture()
58 { 58 {
59 deleteObject(0); 59 deleteObject(0);
60 } 60 }
61 61
62 void WebGLTexture::setTarget(GC3Denum target, GC3Dint maxLevel) 62 void WebGLTexture::setTarget(GC3Denum target, GC3Dint maxLevel)
63 { 63 {
64 if (!object()) 64 if (!object())
65 return; 65 return;
66 // Target is finalized the first time bindTexture() is called. 66 // Target is finalized the first time bindTexture() is called.
67 if (m_target) 67 if (m_target)
68 return; 68 return;
69 switch (target) { 69 switch (target) {
70 case GraphicsContext3D::TEXTURE_2D: 70 case GL_TEXTURE_2D:
71 m_target = target; 71 m_target = target;
72 m_info.resize(1); 72 m_info.resize(1);
73 m_info[0].resize(maxLevel); 73 m_info[0].resize(maxLevel);
74 break; 74 break;
75 case GraphicsContext3D::TEXTURE_CUBE_MAP: 75 case GL_TEXTURE_CUBE_MAP:
76 m_target = target; 76 m_target = target;
77 m_info.resize(6); 77 m_info.resize(6);
78 for (int ii = 0; ii < 6; ++ii) 78 for (int ii = 0; ii < 6; ++ii)
79 m_info[ii].resize(maxLevel); 79 m_info[ii].resize(maxLevel);
80 break; 80 break;
81 } 81 }
82 } 82 }
83 83
84 void WebGLTexture::setParameteri(GC3Denum pname, GC3Dint param) 84 void WebGLTexture::setParameteri(GC3Denum pname, GC3Dint param)
85 { 85 {
86 if (!object() || !m_target) 86 if (!object() || !m_target)
87 return; 87 return;
88 switch (pname) { 88 switch (pname) {
89 case GraphicsContext3D::TEXTURE_MIN_FILTER: 89 case GL_TEXTURE_MIN_FILTER:
90 switch (param) { 90 switch (param) {
91 case GraphicsContext3D::NEAREST: 91 case GL_NEAREST:
92 case GraphicsContext3D::LINEAR: 92 case GL_LINEAR:
93 case GraphicsContext3D::NEAREST_MIPMAP_NEAREST: 93 case GL_NEAREST_MIPMAP_NEAREST:
94 case GraphicsContext3D::LINEAR_MIPMAP_NEAREST: 94 case GL_LINEAR_MIPMAP_NEAREST:
95 case GraphicsContext3D::NEAREST_MIPMAP_LINEAR: 95 case GL_NEAREST_MIPMAP_LINEAR:
96 case GraphicsContext3D::LINEAR_MIPMAP_LINEAR: 96 case GL_LINEAR_MIPMAP_LINEAR:
97 m_minFilter = param; 97 m_minFilter = param;
98 break; 98 break;
99 } 99 }
100 break; 100 break;
101 case GraphicsContext3D::TEXTURE_MAG_FILTER: 101 case GL_TEXTURE_MAG_FILTER:
102 switch (param) { 102 switch (param) {
103 case GraphicsContext3D::NEAREST: 103 case GL_NEAREST:
104 case GraphicsContext3D::LINEAR: 104 case GL_LINEAR:
105 m_magFilter = param; 105 m_magFilter = param;
106 break; 106 break;
107 } 107 }
108 break; 108 break;
109 case GraphicsContext3D::TEXTURE_WRAP_S: 109 case GL_TEXTURE_WRAP_S:
110 switch (param) { 110 switch (param) {
111 case GraphicsContext3D::CLAMP_TO_EDGE: 111 case GL_CLAMP_TO_EDGE:
112 case GraphicsContext3D::MIRRORED_REPEAT: 112 case GL_MIRRORED_REPEAT:
113 case GraphicsContext3D::REPEAT: 113 case GL_REPEAT:
114 m_wrapS = param; 114 m_wrapS = param;
115 break; 115 break;
116 } 116 }
117 break; 117 break;
118 case GraphicsContext3D::TEXTURE_WRAP_T: 118 case GL_TEXTURE_WRAP_T:
119 switch (param) { 119 switch (param) {
120 case GraphicsContext3D::CLAMP_TO_EDGE: 120 case GL_CLAMP_TO_EDGE:
121 case GraphicsContext3D::MIRRORED_REPEAT: 121 case GL_MIRRORED_REPEAT:
122 case GraphicsContext3D::REPEAT: 122 case GL_REPEAT:
123 m_wrapT = param; 123 m_wrapT = param;
124 break; 124 break;
125 } 125 }
126 break; 126 break;
127 default: 127 default:
128 return; 128 return;
129 } 129 }
130 update(); 130 update();
131 } 131 }
132 132
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 return m_isNPOT; 232 return m_isNPOT;
233 } 233 }
234 234
235 bool WebGLTexture::needToUseBlackTexture(TextureExtensionFlag flag) const 235 bool WebGLTexture::needToUseBlackTexture(TextureExtensionFlag flag) const
236 { 236 {
237 if (!object()) 237 if (!object())
238 return false; 238 return false;
239 if (m_needToUseBlackTexture) 239 if (m_needToUseBlackTexture)
240 return true; 240 return true;
241 if ((m_isFloatType && !(flag & TextureFloatLinearExtensionEnabled)) || (m_is HalfFloatType && !(flag && TextureHalfFloatLinearExtensionEnabled))) { 241 if ((m_isFloatType && !(flag & TextureFloatLinearExtensionEnabled)) || (m_is HalfFloatType && !(flag && TextureHalfFloatLinearExtensionEnabled))) {
242 if (m_magFilter != GraphicsContext3D::NEAREST || (m_minFilter != Graphic sContext3D::NEAREST && m_minFilter != GraphicsContext3D::NEAREST_MIPMAP_NEAREST) ) 242 if (m_magFilter != GL_NEAREST || (m_minFilter != GL_NEAREST && m_minFilt er != GL_NEAREST_MIPMAP_NEAREST))
243 return true; 243 return true;
244 } 244 }
245 return false; 245 return false;
246 } 246 }
247 247
248 void WebGLTexture::deleteObjectImpl(GraphicsContext3D* context3d, Platform3DObje ct object) 248 void WebGLTexture::deleteObjectImpl(GraphicsContext3D* context3d, Platform3DObje ct object)
249 { 249 {
250 context3d->deleteTexture(object); 250 context3d->deleteTexture(object);
251 } 251 }
252 252
253 int WebGLTexture::mapTargetToIndex(GC3Denum target) const 253 int WebGLTexture::mapTargetToIndex(GC3Denum target) const
254 { 254 {
255 if (m_target == GraphicsContext3D::TEXTURE_2D) { 255 if (m_target == GL_TEXTURE_2D) {
256 if (target == GraphicsContext3D::TEXTURE_2D) 256 if (target == GL_TEXTURE_2D)
257 return 0; 257 return 0;
258 } else if (m_target == GraphicsContext3D::TEXTURE_CUBE_MAP) { 258 } else if (m_target == GL_TEXTURE_CUBE_MAP) {
259 switch (target) { 259 switch (target) {
260 case GraphicsContext3D::TEXTURE_CUBE_MAP_POSITIVE_X: 260 case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
261 return 0; 261 return 0;
262 case GraphicsContext3D::TEXTURE_CUBE_MAP_NEGATIVE_X: 262 case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
263 return 1; 263 return 1;
264 case GraphicsContext3D::TEXTURE_CUBE_MAP_POSITIVE_Y: 264 case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
265 return 2; 265 return 2;
266 case GraphicsContext3D::TEXTURE_CUBE_MAP_NEGATIVE_Y: 266 case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
267 return 3; 267 return 3;
268 case GraphicsContext3D::TEXTURE_CUBE_MAP_POSITIVE_Z: 268 case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
269 return 4; 269 return 4;
270 case GraphicsContext3D::TEXTURE_CUBE_MAP_NEGATIVE_Z: 270 case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
271 return 5; 271 return 5;
272 } 272 }
273 } 273 }
274 return -1; 274 return -1;
275 } 275 }
276 276
277 bool WebGLTexture::canGenerateMipmaps() 277 bool WebGLTexture::canGenerateMipmaps()
278 { 278 {
279 if (isNPOT()) 279 if (isNPOT())
280 return false; 280 return false;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 if (!info.valid 346 if (!info.valid
347 || info.width != width || info.height != height 347 || info.width != width || info.height != height
348 || info.internalFormat != info0.internalFormat || info.type != info0.type) { 348 || info.internalFormat != info0.internalFormat || info.type != info0.type) {
349 m_isComplete = false; 349 m_isComplete = false;
350 break; 350 break;
351 } 351 }
352 352
353 } 353 }
354 } 354 }
355 } 355 }
356 m_isFloatType = m_info[0][0].type == GraphicsContext3D::FLOAT; 356 m_isFloatType = m_info[0][0].type == GL_FLOAT;
357 m_isHalfFloatType = m_info[0][0].type == GraphicsContext3D::HALF_FLOAT_OES; 357 m_isHalfFloatType = m_info[0][0].type == GL_HALF_FLOAT_OES;
358 358
359 m_needToUseBlackTexture = false; 359 m_needToUseBlackTexture = false;
360 // NPOT 360 // NPOT
361 if (m_isNPOT && ((m_minFilter != GraphicsContext3D::NEAREST && m_minFilter ! = GraphicsContext3D::LINEAR) 361 if (m_isNPOT && ((m_minFilter != GL_NEAREST && m_minFilter != GL_LINEAR)
362 || m_wrapS != GraphicsContext3D::CLAMP_TO_EDGE || m_wrapT ! = GraphicsContext3D::CLAMP_TO_EDGE)) 362 || m_wrapS != GL_CLAMP_TO_EDGE || m_wrapT != GL_CLAMP_TO_EDGE))
363 m_needToUseBlackTexture = true; 363 m_needToUseBlackTexture = true;
364 // If it is a Cube texture, check Cube Completeness first 364 // If it is a Cube texture, check Cube Completeness first
365 if (m_info.size() > 1 && !m_isCubeComplete) 365 if (m_info.size() > 1 && !m_isCubeComplete)
366 m_needToUseBlackTexture = true; 366 m_needToUseBlackTexture = true;
367 // Completeness 367 // Completeness
368 if (!m_isComplete && m_minFilter != GraphicsContext3D::NEAREST && m_minFilte r != GraphicsContext3D::LINEAR) 368 if (!m_isComplete && m_minFilter != GL_NEAREST && m_minFilter != GL_LINEAR)
369 m_needToUseBlackTexture = true; 369 m_needToUseBlackTexture = true;
370 } 370 }
371 371
372 const WebGLTexture::LevelInfo* WebGLTexture::getLevelInfo(GC3Denum target, GC3Di nt level) const 372 const WebGLTexture::LevelInfo* WebGLTexture::getLevelInfo(GC3Denum target, GC3Di nt level) const
373 { 373 {
374 if (!object() || !m_target) 374 if (!object() || !m_target)
375 return 0; 375 return 0;
376 int targetIndex = mapTargetToIndex(target); 376 int targetIndex = mapTargetToIndex(target);
377 if (targetIndex < 0 || targetIndex >= static_cast<int>(m_info.size())) 377 if (targetIndex < 0 || targetIndex >= static_cast<int>(m_info.size()))
378 return 0; 378 return 0;
379 if (level < 0 || level >= static_cast<GC3Dint>(m_info[targetIndex].size())) 379 if (level < 0 || level >= static_cast<GC3Dint>(m_info[targetIndex].size()))
380 return 0; 380 return 0;
381 return &(m_info[targetIndex][level]); 381 return &(m_info[targetIndex][level]);
382 } 382 }
383 383
384 } 384 }
OLDNEW
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContext.cpp ('k') | Source/core/html/canvas/WebGLVertexArrayObjectOES.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698