|
|
@@ -1,42 +1,18 @@
|
|
|
#include "Renderer.h"
|
|
|
-#include <iostream>
|
|
|
-#include <fstream>
|
|
|
+#include "VertexArray.h"
|
|
|
+#include "IndexBuffer.h"
|
|
|
+#include "Shader.h"
|
|
|
|
|
|
-void GLClearError() {
|
|
|
- while (glGetError() != GL_NO_ERROR);
|
|
|
-}
|
|
|
-
|
|
|
-void LogError(unsigned int Line, const char* functionName) {
|
|
|
- GLuint errorType = glGetError();
|
|
|
- while (errorType != GL_NO_ERROR) {
|
|
|
- std::cout << __FILE__ << " Line: " << Line << " Function Name: " << functionName << " ";
|
|
|
- switch (errorType)
|
|
|
- {
|
|
|
- case GL_INVALID_ENUM:
|
|
|
- std::cout << "LogError: " << "GL_INVALID_ENUM" << std::endl;
|
|
|
- break;
|
|
|
- case GL_INVALID_VALUE:
|
|
|
- std::cout << "LogError: " << "GL_INVALID_VALUE" << std::endl;
|
|
|
- break;
|
|
|
- case GL_INVALID_OPERATION:
|
|
|
- std::cout << "LogError: " << "GL_INVALID_OPERATION" << std::endl;
|
|
|
- break;
|
|
|
- case GL_INVALID_FRAMEBUFFER_OPERATION:
|
|
|
- std::cout << "LogError: " << "GL_INVALID_FRAMEBUFFER_OPERATION" << std::endl;
|
|
|
- break;
|
|
|
- case GL_OUT_OF_MEMORY:
|
|
|
- std::cout << "LogError: " << "GL_OUT_OF_MEMORY" << std::endl;
|
|
|
- break;
|
|
|
- case GL_STACK_UNDERFLOW:
|
|
|
- std::cout << "LogError: " << "GL_STACK_UNDERFLOW" << std::endl;
|
|
|
- break;
|
|
|
- case GL_STACK_OVERFLOW:
|
|
|
- std::cout << "LogError: " << "GL_STACK_OVERFLOW" << std::endl;
|
|
|
- break;
|
|
|
- }
|
|
|
+void Renderer::Draw(const VertexArray& va, const IndexBuffer& ib, const Shader& shader) const
|
|
|
+{
|
|
|
+ shader.Bind();
|
|
|
+ va.Bind();
|
|
|
+ ib.Bind();
|
|
|
|
|
|
- __debugbreak(); // 中断函数 编译器强相关函数,gcc 没有
|
|
|
+ GL_CALL(glDrawElements(GL_TRIANGLES, ib.GetCount(), GL_UNSIGNED_INT, nullptr));
|
|
|
+}
|
|
|
|
|
|
- errorType = glGetError();
|
|
|
- }
|
|
|
-}
|
|
|
+void Renderer::Clear() const
|
|
|
+{
|
|
|
+ GL_CALL(glClear(GL_COLOR_BUFFER_BIT));
|
|
|
+}
|