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

Side by Side Diff: command_buffer/service/cross/gl/geometry_gl.cc

Issue 332036: move all O3D specific command buffer stuff to command_buffer::o3d... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: Created 11 years, 1 month 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 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 20 matching lines...) Expand all
31 31
32 32
33 // This file contains the implementation of the VertexBufferGL, IndexBufferGL 33 // This file contains the implementation of the VertexBufferGL, IndexBufferGL
34 // and VertexStructGL classes, as well as the geometry-related GAPI functions. 34 // and VertexStructGL classes, as well as the geometry-related GAPI functions.
35 35
36 #include "command_buffer/service/cross/gl/gapi_gl.h" 36 #include "command_buffer/service/cross/gl/gapi_gl.h"
37 #include "command_buffer/service/cross/gl/geometry_gl.h" 37 #include "command_buffer/service/cross/gl/geometry_gl.h"
38 38
39 namespace o3d { 39 namespace o3d {
40 namespace command_buffer { 40 namespace command_buffer {
41 namespace o3d {
41 42
42 VertexBufferGL::~VertexBufferGL() { 43 VertexBufferGL::~VertexBufferGL() {
43 glDeleteBuffers(1, &gl_buffer_); 44 glDeleteBuffers(1, &gl_buffer_);
44 CHECK_GL_ERROR(); 45 CHECK_GL_ERROR();
45 } 46 }
46 47
47 // Creates the GL buffer object. 48 // Creates the GL buffer object.
48 void VertexBufferGL::Create() { 49 void VertexBufferGL::Create() {
49 glGenBuffers(1, &gl_buffer_); 50 glGenBuffers(1, &gl_buffer_);
50 glBindBuffer(GL_ARRAY_BUFFER, gl_buffer_); 51 glBindBuffer(GL_ARRAY_BUFFER, gl_buffer_);
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 LOG(ERROR) << "Drawing with invalid streams."; 452 LOG(ERROR) << "Drawing with invalid streams.";
452 return false; 453 return false;
453 } 454 }
454 max_vertices_ = vertex_struct->SetStreams(this); 455 max_vertices_ = vertex_struct->SetStreams(this);
455 validate_streams_ = false; 456 validate_streams_ = false;
456 return max_vertices_ > 0; 457 return max_vertices_ > 0;
457 } 458 }
458 459
459 namespace { 460 namespace {
460 461
461 void PrimitiveTypeToGL(command_buffer::PrimitiveType primitive_type, 462 void PrimitiveTypeToGL(o3d::PrimitiveType primitive_type,
462 GLenum *gl_mode, 463 GLenum *gl_mode,
463 unsigned int *count) { 464 unsigned int *count) {
464 switch (primitive_type) { 465 switch (primitive_type) {
465 case command_buffer::kPoints: 466 case o3d::kPoints:
466 *gl_mode = GL_POINTS; 467 *gl_mode = GL_POINTS;
467 break; 468 break;
468 case command_buffer::kLines: 469 case o3d::kLines:
469 *gl_mode = GL_LINES; 470 *gl_mode = GL_LINES;
470 *count *= 2; 471 *count *= 2;
471 break; 472 break;
472 case command_buffer::kLineStrips: 473 case o3d::kLineStrips:
473 *gl_mode = GL_LINE_STRIP; 474 *gl_mode = GL_LINE_STRIP;
474 ++*count; 475 ++*count;
475 break; 476 break;
476 case command_buffer::kTriangles: 477 case o3d::kTriangles:
477 *gl_mode = GL_TRIANGLES; 478 *gl_mode = GL_TRIANGLES;
478 *count *= 3; 479 *count *= 3;
479 break; 480 break;
480 case command_buffer::kTriangleStrips: 481 case o3d::kTriangleStrips:
481 *gl_mode = GL_TRIANGLE_STRIP; 482 *gl_mode = GL_TRIANGLE_STRIP;
482 *count += 2; 483 *count += 2;
483 break; 484 break;
484 case command_buffer::kTriangleFans: 485 case o3d::kTriangleFans:
485 *gl_mode = GL_TRIANGLE_FAN; 486 *gl_mode = GL_TRIANGLE_FAN;
486 *count += 2; 487 *count += 2;
487 break; 488 break;
488 default: 489 default:
489 LOG(FATAL) << "Invalid primitive type"; 490 LOG(FATAL) << "Invalid primitive type";
490 break; 491 break;
491 } 492 }
492 } 493 }
493 494
494 } // anonymous namespace 495 } // anonymous namespace
495 496
496 parse_error::ParseError GAPIGL::Draw(PrimitiveType primitive_type, 497 parse_error::ParseError GAPIGL::Draw(o3d::PrimitiveType primitive_type,
497 unsigned int first, 498 unsigned int first,
498 unsigned int count) { 499 unsigned int count) {
499 if (validate_effect_ && !ValidateEffect()) { 500 if (validate_effect_ && !ValidateEffect()) {
500 return parse_error::kParseInvalidArguments; 501 return parse_error::kParseInvalidArguments;
501 } 502 }
502 DCHECK(current_effect_); 503 DCHECK(current_effect_);
503 if (validate_streams_ && !ValidateStreams()) { 504 if (validate_streams_ && !ValidateStreams()) {
504 return parse_error::kParseInvalidArguments; 505 return parse_error::kParseInvalidArguments;
505 } 506 }
506 GLenum gl_mode = GL_POINTS; 507 GLenum gl_mode = GL_POINTS;
507 PrimitiveTypeToGL(primitive_type, &gl_mode, &count); 508 PrimitiveTypeToGL(primitive_type, &gl_mode, &count);
508 if (first + count > max_vertices_) { 509 if (first + count > max_vertices_) {
509 return parse_error::kParseInvalidArguments; 510 return parse_error::kParseInvalidArguments;
510 } 511 }
511 glDrawArrays(gl_mode, first, count); 512 glDrawArrays(gl_mode, first, count);
512 CHECK_GL_ERROR(); 513 CHECK_GL_ERROR();
513 return parse_error::kParseNoError; 514 return parse_error::kParseNoError;
514 } 515 }
515 516
516 parse_error::ParseError GAPIGL::DrawIndexed( 517 parse_error::ParseError GAPIGL::DrawIndexed(
517 PrimitiveType primitive_type, 518 o3d::PrimitiveType primitive_type,
518 ResourceId index_buffer_id, 519 ResourceId index_buffer_id,
519 unsigned int first, 520 unsigned int first,
520 unsigned int count, 521 unsigned int count,
521 unsigned int min_index, 522 unsigned int min_index,
522 unsigned int max_index) { 523 unsigned int max_index) {
523 IndexBufferGL *index_buffer = index_buffers_.Get(index_buffer_id); 524 IndexBufferGL *index_buffer = index_buffers_.Get(index_buffer_id);
524 if (!index_buffer) return parse_error::kParseInvalidArguments; 525 if (!index_buffer) return parse_error::kParseInvalidArguments;
525 if (validate_effect_ && !ValidateEffect()) { 526 if (validate_effect_ && !ValidateEffect()) {
526 return parse_error::kParseInvalidArguments; 527 return parse_error::kParseInvalidArguments;
527 } 528 }
(...skipping 14 matching lines...) Expand all
542 GLuint offset = first * index_size; 543 GLuint offset = first * index_size;
543 if (offset + count * index_size > index_buffer->size()) { 544 if (offset + count * index_size > index_buffer->size()) {
544 return parse_error::kParseInvalidArguments; 545 return parse_error::kParseInvalidArguments;
545 } 546 }
546 glDrawRangeElements(gl_mode, min_index, max_index, count, index_type, 547 glDrawRangeElements(gl_mode, min_index, max_index, count, index_type,
547 OffsetToPtr(offset)); 548 OffsetToPtr(offset));
548 CHECK_GL_ERROR(); 549 CHECK_GL_ERROR();
549 return parse_error::kParseNoError; 550 return parse_error::kParseNoError;
550 } 551 }
551 552
553 } // namespace o3d
552 } // namespace command_buffer 554 } // namespace command_buffer
553 } // namespace o3d 555 } // namespace o3d
OLDNEW
« no previous file with comments | « command_buffer/service/cross/gl/geometry_gl.h ('k') | command_buffer/service/cross/gl/render_surface_gl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698