GearEngine  0.0.1
Gear::OpenGLVertexArray 클래스 참조

#include <OpenGLVertexArray.h>

Gear::OpenGLVertexArray에 대한 상속 다이어그램 :
Inheritance graph
Gear::OpenGLVertexArray에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 OpenGLVertexArray ()
 
virtual ~OpenGLVertexArray ()
 
virtual void Bind () const override
 
virtual void Unbind () const override
 
virtual void AddVertexBuffer (const Ref< VertexBuffer > &vertexBuffer) override
 
virtual void SetIndexBuffer (const Ref< IndexBuffer > &indexBuffer) override
 
virtual const std::vector< Ref< VertexBuffer > > & GetVertexBuffer () const
 
virtual const Ref< IndexBuffer > & GetIndexBuffer () const
 

정적 Public 멤버 함수

static Ref< VertexArrayCreate ()
 

Private 속성

uint32_t m_RendererID
 
std::vector< Ref< VertexBuffer > > m_VertexBuffers
 
Ref< IndexBufferm_IndexBuffer
 

상세한 설명

OpenGLVertexArray.h 파일의 7 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ OpenGLVertexArray()

Gear::OpenGLVertexArray::OpenGLVertexArray ( )

OpenGLVertexArray.cpp 파일의 29 번째 라인에서 정의되었습니다.

30  {
32 
33  glCreateVertexArrays(1, &m_RendererID);
34  }

◆ ~OpenGLVertexArray()

virtual Gear::OpenGLVertexArray::~OpenGLVertexArray ( )
inlinevirtual

OpenGLVertexArray.h 파일의 12 번째 라인에서 정의되었습니다.

12 {}

멤버 함수 문서화

◆ AddVertexBuffer()

void Gear::OpenGLVertexArray::AddVertexBuffer ( const Ref< VertexBuffer > &  vertexBuffer)
overridevirtual

Gear::VertexArray를 구현.

OpenGLVertexArray.cpp 파일의 48 번째 라인에서 정의되었습니다.

49  {
51 
52  GR_CORE_ASSERT(vertexBuffer->GetLayout().GetElements().size(), "Vertex Buffer has no layout!");
53 
54  glBindVertexArray(m_RendererID);
55  vertexBuffer->Bind();
56 
57  uint32_t index = 0;
58  const auto& layout = vertexBuffer->GetLayout();
59  for (const auto& element : layout)
60  {
61  glEnableVertexAttribArray(index);
62  glVertexAttribPointer(
63  index,
64  element.GetComponentCount(),
65  ShaderDataTypeToOpenGlBaseType(element.Type),
66  element.Normalized ? GL_TRUE : GL_FALSE,
67  layout.GetStride(),
68  (const void*)element.Offset
69  );
70  index++;
71  }
72  m_VertexBuffers.push_back(vertexBuffer);
73  }
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ Bind()

void Gear::OpenGLVertexArray::Bind ( ) const
overridevirtual

Gear::VertexArray를 구현.

OpenGLVertexArray.cpp 파일의 35 번째 라인에서 정의되었습니다.

36  {
38 
39  glBindVertexArray(m_RendererID);
40  }

◆ Create()

Ref< VertexArray > Gear::VertexArray::Create ( )
staticinherited

VertexArray.cpp 파일의 8 번째 라인에서 정의되었습니다.

9  {
10  switch (Renderer::GetAPI())
11  {
13  GR_CORE_ASSERT(false, "RendererAPI::None is currently not supported!");
14  return nullptr;
16  return std::make_shared<OpenGLVertexArray>();
17  }
18  GR_CORE_ASSERT(false, "Unknown RendererAPI!");
19  return nullptr;
20  }
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetIndexBuffer()

virtual const Ref<IndexBuffer>& Gear::OpenGLVertexArray::GetIndexBuffer ( ) const
inlinevirtual

Gear::VertexArray를 구현.

OpenGLVertexArray.h 파일의 21 번째 라인에서 정의되었습니다.

21 { return m_IndexBuffer; }

◆ GetVertexBuffer()

virtual const std::vector<Ref<VertexBuffer> >& Gear::OpenGLVertexArray::GetVertexBuffer ( ) const
inlinevirtual

Gear::VertexArray를 구현.

OpenGLVertexArray.h 파일의 20 번째 라인에서 정의되었습니다.

20 { return m_VertexBuffers; }

◆ SetIndexBuffer()

void Gear::OpenGLVertexArray::SetIndexBuffer ( const Ref< IndexBuffer > &  indexBuffer)
overridevirtual

Gear::VertexArray를 구현.

OpenGLVertexArray.cpp 파일의 74 번째 라인에서 정의되었습니다.

75  {
77 
78  glBindVertexArray(m_RendererID);
79  indexBuffer->Bind();
80 
81  m_IndexBuffer = indexBuffer;
82  }

◆ Unbind()

void Gear::OpenGLVertexArray::Unbind ( ) const
overridevirtual

Gear::VertexArray를 구현.

OpenGLVertexArray.cpp 파일의 41 번째 라인에서 정의되었습니다.

42  {
44 
45  glBindVertexArray(0);
46 
47  }

멤버 데이터 문서화

◆ m_IndexBuffer

Ref<IndexBuffer> Gear::OpenGLVertexArray::m_IndexBuffer
private

OpenGLVertexArray.h 파일의 26 번째 라인에서 정의되었습니다.

◆ m_RendererID

uint32_t Gear::OpenGLVertexArray::m_RendererID
private

OpenGLVertexArray.h 파일의 24 번째 라인에서 정의되었습니다.

◆ m_VertexBuffers

std::vector<Ref<VertexBuffer> > Gear::OpenGLVertexArray::m_VertexBuffers
private

OpenGLVertexArray.h 파일의 25 번째 라인에서 정의되었습니다.


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.:
Gear::OpenGLVertexArray::m_VertexBuffers
std::vector< Ref< VertexBuffer > > m_VertexBuffers
Definition: OpenGLVertexArray.h:25
GR_PROFILE_FUNCTION
#define GR_PROFILE_FUNCTION()
Definition: Instrumentor.h:131
Gear::RendererAPI::API::None
@ None
Gear::RendererAPI::API::OpenGL
@ OpenGL
Gear::Renderer::GetAPI
static RendererAPI::API GetAPI()
Definition: Renderer.h:23
GR_CORE_ASSERT
#define GR_CORE_ASSERT(x,...)
Definition: Core.h:68
Gear::OpenGLVertexArray::m_RendererID
uint32_t m_RendererID
Definition: OpenGLVertexArray.h:24
Gear::OpenGLVertexArray::m_IndexBuffer
Ref< IndexBuffer > m_IndexBuffer
Definition: OpenGLVertexArray.h:26
Gear::ShaderDataTypeToOpenGlBaseType
static GLenum ShaderDataTypeToOpenGlBaseType(ShaderDataType type)
Definition: OpenGLVertexArray.cpp:8