Adds formatting config and formats project
This commit is contained in:
parent
6540ce8b7c
commit
ca64248ace
31
.clang-format
Normal file
31
.clang-format
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
BasedOnStyle: LLVM
|
||||||
|
IndentWidth: 4
|
||||||
|
TabWidth: 4
|
||||||
|
UseTab: Never
|
||||||
|
ColumnLimit: 120
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
|
BreakBeforeBraces: Linux
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
PointerAlignment: Left
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AlignOperands: true
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AllowShortBlocksOnASingleLine: Empty
|
||||||
|
Cpp11BracedListStyle: false
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||||
|
SortIncludes: false
|
||||||
|
IncludeBlocks: Preserve
|
||||||
|
IndentCaseLabels: true
|
||||||
|
IndentGotoLabels: false
|
||||||
|
IndentPPDirectives: None
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
SpacesBeforeTrailingComments: 1
|
198
src/main.cpp
198
src/main.cpp
@ -11,155 +11,147 @@ void processInput(GLFWwindow* window);
|
|||||||
void setupGLFW(GLFWwindow** window);
|
void setupGLFW(GLFWwindow** window);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int width, height, nrChannels;
|
int width, height, nrChannels;
|
||||||
unsigned char* data;
|
unsigned char* data;
|
||||||
} texture_t;
|
} texture_t;
|
||||||
|
|
||||||
float vertices[] = {
|
float vertices[] = {
|
||||||
// positions colours texture coords
|
// positions colours texture coords
|
||||||
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right
|
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right
|
||||||
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right
|
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right
|
||||||
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left
|
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left
|
||||||
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // bottom left
|
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // bottom left
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int indices[] = {
|
unsigned int indices[] = {
|
||||||
0, 1, 3,
|
0, 1, 3, 1, 2, 3,
|
||||||
1, 2, 3
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wireframe = false;
|
bool wireframe = false;
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
GLFWwindow* window;
|
GLFWwindow* window;
|
||||||
setupGLFW(&window);
|
setupGLFW(&window);
|
||||||
|
|
||||||
|
Shader myShader("shaders/shader.vs", "shaders/shader.fs");
|
||||||
|
|
||||||
Shader myShader("shaders/shader.vs", "shaders/shader.fs");
|
texture_t tex;
|
||||||
|
|
||||||
texture_t tex;
|
stbi_set_flip_vertically_on_load(true);
|
||||||
|
|
||||||
stbi_set_flip_vertically_on_load(true);
|
tex.data = stbi_load("textures/wg.jpg", &tex.width, &tex.height, &tex.nrChannels, 0);
|
||||||
|
|
||||||
tex.data = stbi_load("textures/wg.jpg", &tex.width, &tex.height, &tex.nrChannels, 0);
|
unsigned int texture;
|
||||||
|
glGenTextures(1, &texture);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, texture);
|
||||||
|
|
||||||
unsigned int texture;
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
||||||
glGenTextures(1, &texture);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||||
glBindTexture(GL_TEXTURE_2D, texture);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
||||||
|
|
||||||
|
if (tex.data) {
|
||||||
if (tex.data) {
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex.width, tex.height, 0, GL_RGB, GL_UNSIGNED_BYTE, tex.data);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, tex.width, tex.height, 0, GL_RGB, GL_UNSIGNED_BYTE, tex.data);
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
glGenerateMipmap(GL_TEXTURE_2D);
|
} else {
|
||||||
} else {
|
std::cout << "Failed to load texture\n";
|
||||||
std::cout << "Failed to load texture\n";
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
stbi_image_free(tex.data);
|
||||||
|
|
||||||
|
unsigned int VAO;
|
||||||
stbi_image_free(tex.data);
|
glGenVertexArrays(1, &VAO);
|
||||||
|
|
||||||
unsigned int VAO;
|
|
||||||
glGenVertexArrays(1, &VAO);
|
|
||||||
|
|
||||||
unsigned int VBO;
|
unsigned int VBO;
|
||||||
glGenBuffers(1, &VBO);
|
glGenBuffers(1, &VBO);
|
||||||
|
|
||||||
unsigned int EBO;
|
unsigned int EBO;
|
||||||
glGenBuffers(1, &EBO);
|
glGenBuffers(1, &EBO);
|
||||||
|
|
||||||
// bind Vertex Array Object
|
// bind Vertex Array Object
|
||||||
glBindVertexArray(VAO);
|
glBindVertexArray(VAO);
|
||||||
// copy our vertices into a buffer for opengl to use
|
// copy our vertices into a buffer for opengl to use
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
||||||
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
|
||||||
// copy our indices
|
// copy our indices
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
|
||||||
|
|
||||||
// set the vertex attributes pointers
|
|
||||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*) 0);
|
|
||||||
glEnableVertexAttribArray(0);
|
|
||||||
|
|
||||||
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*) (3 * sizeof(float)));
|
// set the vertex attributes pointers
|
||||||
glEnableVertexAttribArray(1);
|
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);
|
||||||
|
glEnableVertexAttribArray(0);
|
||||||
|
|
||||||
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*) (6 * sizeof(float)));
|
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float)));
|
||||||
glEnableVertexAttribArray(2);
|
glEnableVertexAttribArray(1);
|
||||||
|
|
||||||
myShader.use();
|
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
|
||||||
myShader.setInt("tex", 0);
|
glEnableVertexAttribArray(2);
|
||||||
|
|
||||||
|
myShader.use();
|
||||||
|
myShader.setInt("tex", 0);
|
||||||
|
|
||||||
while(!glfwWindowShouldClose(window)) {
|
while (!glfwWindowShouldClose(window)) {
|
||||||
//input
|
// input
|
||||||
processInput(window);
|
processInput(window);
|
||||||
|
|
||||||
//rendering
|
// rendering
|
||||||
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
|
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
myShader.use();
|
myShader.use();
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, texture);
|
|
||||||
|
|
||||||
glBindVertexArray(VAO);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
glBindTexture(GL_TEXTURE_2D, texture);
|
||||||
glBindVertexArray(0); // unbinds the VAO so its ready to be bound again for the next render
|
|
||||||
|
|
||||||
// check and call events and swap buffers
|
glBindVertexArray(VAO);
|
||||||
glfwSwapBuffers(window);
|
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
||||||
glfwPollEvents();
|
glBindVertexArray(0); // unbinds the VAO so its ready to be bound again for the next render
|
||||||
}
|
|
||||||
|
|
||||||
glfwTerminate();
|
// check and call events and swap buffers
|
||||||
return 0;
|
glfwSwapBuffers(window);
|
||||||
|
glfwPollEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
glfwTerminate();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupGLFW(GLFWwindow** window)
|
void setupGLFW(GLFWwindow** window)
|
||||||
{
|
{
|
||||||
glfwInit();
|
glfwInit();
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
|
||||||
*window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
|
*window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
|
||||||
if (window == NULL) {
|
if (window == NULL) {
|
||||||
std::cout << "Failed to create GLFW window\n";
|
std::cout << "Failed to create GLFW window\n";
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
glfwMakeContextCurrent(*window);
|
glfwMakeContextCurrent(*window);
|
||||||
|
|
||||||
if (!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) {
|
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
|
||||||
std::cout << "Failed to init GLAD\n";
|
std::cout << "Failed to init GLAD\n";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
glViewport(0, 0, 800, 600);
|
glViewport(0, 0, 800, 600);
|
||||||
glfwSetFramebufferSizeCallback(*window, framebuffer_size_callback);
|
glfwSetFramebufferSizeCallback(*window, framebuffer_size_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
|
||||||
{
|
{
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void processInput(GLFWwindow* window)
|
void processInput(GLFWwindow* window)
|
||||||
{
|
{
|
||||||
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
|
||||||
glfwSetWindowShouldClose(window, true);
|
glfwSetWindowShouldClose(window, true);
|
||||||
if (glfwGetKey(window, GLFW_KEY_ENTER) == GLFW_PRESS) // triggers wireframe mode
|
if (glfwGetKey(window, GLFW_KEY_ENTER) == GLFW_PRESS) // triggers wireframe mode
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||||
if (glfwGetKey(window, GLFW_KEY_BACKSPACE) == GLFW_PRESS) // disables wireframe mode
|
if (glfwGetKey(window, GLFW_KEY_BACKSPACE) == GLFW_PRESS) // disables wireframe mode
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user