Apollo 11.0
自动驾驶开放平台
Plane类 参考

#include <plane.h>

类 Plane 继承关系图:
Plane 的协作图:

Public 成员函数

 Plane (const std::shared_ptr< Texture > &t=NullTextureObj)
 
virtual ~Plane (void)
 
void set_texture (const std::shared_ptr< Texture > &t)
 
GLenum GetPrimitiveType (void) const override
 
GLsizei texWidth (void) const
 
GLsizei texHeight (void) const
 
- Public 成员函数 继承自 RenderableObject
 RenderableObject (int vertex_count=1, int vertex_element_count=3, const std::shared_ptr< QOpenGLShaderProgram > &shaderProgram=NullRenderableObj)
 
virtual ~RenderableObject (void)
 
virtual void SetupExtraUniforms (void)
 
bool is_renderable (void) const
 
void set_is_renderable (bool b)
 
int vertex_count (void) const
 
void set_vertex_count (int vertexCount)
 
int vertex_element_count (void) const
 
void set_vertex_element_count (int vertexElementCount)
 
int VertexBufferSize (void) const
 
void set_shader_program (const std::shared_ptr< QOpenGLShaderProgram > &shaderProgram)
 
bool haveShaderProgram (void)
 
bool Init (std::shared_ptr< QOpenGLShaderProgram > &shaderProgram=NullRenderableObj)
 
void Destroy (void)
 
void Render (const QMatrix4x4 *mvp=nullptr)
 

静态 Public 属性

static std::shared_ptr< Texture > NullTextureObj
 
- 静态 Public 属性 继承自 RenderableObject
static std::shared_ptr< QOpenGLShaderProgram > NullRenderableObj
 

Protected 成员函数

bool FillVertexBuffer (GLfloat *pBuffer) override
 
void Draw (void) override
 
void SetupAllAttrPointer (void) override
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 RenderableObject
static std::shared_ptr< QOpenGLShaderProgram > CreateShaderProgram (const QString &vertexShaderFileName, const QString &fragShaderFileName)
 
- Protected 属性 继承自 RenderableObject
bool is_init_
 
bool is_renderable_
 
int vertex_count_
 
int vertex_element_count_
 
std::shared_ptr< QOpenGLShaderProgram > shader_program_
 
QOpenGLVertexArrayObject vao_
 
QOpenGLBuffer vbo_
 

详细描述

在文件 plane.h 第 24 行定义.

构造及析构函数说明

◆ Plane()

Plane::Plane ( const std::shared_ptr< Texture > &  t = NullTextureObj)
explicit

在文件 plane.cc 第 21 行定义.

22 : RenderableObject(4, 4), texture_id_(0), texture_(t) {}

◆ ~Plane()

virtual Plane::~Plane ( void  )
inlinevirtual

在文件 plane.h 第 38 行定义.

38{ texture_.reset(); }

成员函数说明

◆ Draw()

void Plane::Draw ( void  )
overrideprotectedvirtual

重载 RenderableObject .

在文件 plane.cc 第 77 行定义.

77 {
78 if (texture_->data()) {
79 if (texture_->isSizeChanged()) {
80 glGenTextures(1, &texture_id_);
81
82 glBindTexture(GL_TEXTURE_2D, texture_id_);
83 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
84 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
85 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
86 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
87
88 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texture_->width(),
89 texture_->height(), 0, texture_->texture_format(),
90 GL_UNSIGNED_BYTE, texture_->data());
91
92 glBindTexture(GL_TEXTURE_2D, 0);
93
94 texture_->removeDirty();
95 } else if (texture_->isDirty()) {
96 glBindTexture(GL_TEXTURE_2D, texture_id_);
97 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture_->width(),
98 texture_->height(), texture_->texture_format(),
99 GL_UNSIGNED_BYTE, texture_->data());
100 glBindTexture(GL_TEXTURE_2D, 0);
101 texture_->removeDirty();
102 }
103 }
104
105 glActiveTexture(GL_TEXTURE0);
106 glBindTexture(GL_TEXTURE_2D, texture_id_);
108 glBindTexture(GL_TEXTURE_2D, 0);
109}
virtual void Draw(void)

◆ FillVertexBuffer()

bool Plane::FillVertexBuffer ( GLfloat *  pBuffer)
overrideprotectedvirtual

实现了 RenderableObject.

在文件 plane.cc 第 24 行定义.

24 {
25 if (texture_ == nullptr || !texture_->isDirty()) {
26 return false;
27 }
28 glGenTextures(1, &texture_id_);
29
30 glBindTexture(GL_TEXTURE_2D, texture_id_);
31 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
32 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
33 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
34 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
35
36 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texture_->width(),
37 texture_->height(), 0, texture_->texture_format(),
38 GL_UNSIGNED_BYTE, texture_->data());
39
40 glBindTexture(GL_TEXTURE_2D, 0);
41
42 texture_->removeDirty();
43
44 pBuffer[0] = -1.0f;
45 pBuffer[1] = -1.0f;
46 pBuffer[2] = 0.0f;
47 pBuffer[3] = 0.0f;
48 pBuffer[4] = 1.0f;
49 pBuffer[5] = -1.0f;
50 pBuffer[6] = 1.0f;
51 pBuffer[7] = 0.0f;
52 pBuffer[8] = 1.0f;
53 pBuffer[9] = 1.0f;
54 pBuffer[10] = 1.0f;
55 pBuffer[11] = 1.0f;
56 pBuffer[12] = -1.0f;
57 pBuffer[13] = 1.0f;
58 pBuffer[14] = 0.0f;
59 pBuffer[15] = 1.0f;
60
61 return true;
62}

◆ GetPrimitiveType()

GLenum Plane::GetPrimitiveType ( void  ) const
inlineoverridevirtual

实现了 RenderableObject.

在文件 plane.h 第 46 行定义.

46{ return GL_QUADS; }

◆ set_texture()

void Plane::set_texture ( const std::shared_ptr< Texture > &  t)
inline

在文件 plane.h 第 40 行定义.

40 {
41 if (t != texture_) {
42 texture_ = t;
43 }
44 }

◆ SetupAllAttrPointer()

void Plane::SetupAllAttrPointer ( void  )
overrideprotectedvirtual

重载 RenderableObject .

在文件 plane.cc 第 64 行定义.

64 {
65 glEnableVertexAttribArray(0);
66 glVertexAttribPointer(
67 0, 2, GL_FLOAT, GL_FALSE,
68 static_cast<int>(sizeof(GLfloat)) * vertex_element_count(), 0);
69
70 glEnableVertexAttribArray(1);
71 glVertexAttribPointer(
72 1, 2, GL_FLOAT, GL_FALSE,
73 static_cast<int>(sizeof(GLfloat)) * vertex_element_count(),
74 reinterpret_cast<void*>(sizeof(GLfloat) * 2));
75}
int vertex_element_count(void) const

◆ texHeight()

GLsizei Plane::texHeight ( void  ) const
inline

在文件 plane.h 第 48 行定义.

48{ return texture_->height(); }

◆ texWidth()

GLsizei Plane::texWidth ( void  ) const
inline

在文件 plane.h 第 47 行定义.

47{ return texture_->width(); }

类成员变量说明

◆ NullTextureObj

std::shared_ptr< Texture > Plane::NullTextureObj
static

在文件 plane.h 第 35 行定义.


该类的文档由以下文件生成: