commit
b865a86dd2
6 changed files with 270 additions and 0 deletions
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
# This file is used to ignore files which are generated |
||||
# ---------------------------------------------------------------------------- |
||||
|
||||
*~ |
||||
*.autosave |
||||
*.a |
||||
*.core |
||||
*.moc |
||||
*.o |
||||
*.obj |
||||
*.orig |
||||
*.rej |
||||
*.so |
||||
*.so.* |
||||
*_pch.h.cpp |
||||
*_resource.rc |
||||
*.qm |
||||
.#* |
||||
*.*# |
||||
core |
||||
!core/ |
||||
tags |
||||
.DS_Store |
||||
.directory |
||||
*.debug |
||||
Makefile* |
||||
*.prl |
||||
*.app |
||||
moc_*.cpp |
||||
ui_*.h |
||||
qrc_*.cpp |
||||
Thumbs.db |
||||
*.res |
||||
*.rc |
||||
/.qmake.cache |
||||
/.qmake.stash |
||||
|
||||
# qtcreator generated files |
||||
*.pro.user* |
||||
|
||||
# xemacs temporary files |
||||
*.flc |
||||
|
||||
# Vim temporary files |
||||
.*.swp |
||||
|
||||
# Visual Studio generated files |
||||
*.ib_pdb_index |
||||
*.idb |
||||
*.ilk |
||||
*.pdb |
||||
*.sln |
||||
*.suo |
||||
*.vcproj |
||||
*vcproj.*.*.user |
||||
*.ncb |
||||
*.sdf |
||||
*.opensdf |
||||
*.vcxproj |
||||
*vcxproj.* |
||||
|
||||
# MinGW generated files |
||||
*.Debug |
||||
*.Release |
||||
|
||||
# Python byte code |
||||
*.pyc |
||||
|
||||
# Binaries |
||||
# -------- |
||||
*.dll |
||||
*.exe |
||||
|
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
cmake_minimum_required(VERSION 3.5) |
||||
|
||||
project(glapp1 LANGUAGES CXX) |
||||
|
||||
set(CMAKE_CXX_STANDARD 17) |
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON) |
||||
|
||||
add_executable(glapp1 main.cpp) |
||||
find_package(OpenGL) |
||||
if(${OPENGL_FOUND}) |
||||
# message(glu ${OPENGL_LIBRARIES}) |
||||
target_link_libraries(glapp1 ${OPENGL_LIBRARIES}) |
||||
endif() |
||||
find_package(GLEW) |
||||
if(${GLEW_FOUND}) |
||||
target_link_libraries(glapp1 ${GLEW_LIBRARIES}) |
||||
endif() |
||||
|
||||
target_link_libraries(glapp1 glfw3) |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
|
||||
#version 430 |
||||
out vec4 color; |
||||
void main(void) |
||||
{ |
||||
if (gl_FragCoord.x < 200) |
||||
color = vec4(1.0, 0, 1.0, 1.0); |
||||
else |
||||
color = vec4(1.0, 1.0, 0, 1.0); |
||||
// color = vec4(cos(double(gl_FragCoord.x)/30),sin(double(gl_FragCoord.y)/35),sin((double(gl_FragCoord.x)+double(gl_FragCoord.y)*2.5)/15),1.0); |
||||
} |
@ -0,0 +1,153 @@
@@ -0,0 +1,153 @@
|
||||
#include <GL/glew.h> |
||||
#include <GLFW/glfw3.h> |
||||
#include <iostream> |
||||
#include <string> |
||||
#include <fstream> |
||||
|
||||
using namespace std; |
||||
|
||||
void printShaderLog(GLuint shader) { |
||||
int len = 0; |
||||
int chWrittn = 0; |
||||
char *log; |
||||
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len); |
||||
if (len > 0) { |
||||
log = (char *) malloc(len); |
||||
glGetShaderInfoLog(shader, len, &chWrittn, log); |
||||
cout << "Shader Info Log: " << log << endl; |
||||
free(log); |
||||
} |
||||
} |
||||
|
||||
void printProgramLog(int prog) { |
||||
int len = 0; |
||||
int chWrittn = 0; |
||||
char *log; |
||||
glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &len); |
||||
if (len > 0) { |
||||
log = (char *) malloc(len); |
||||
glGetProgramInfoLog(prog, len, &chWrittn, log); |
||||
cout << "Program Info Log: " << log << endl; |
||||
free(log); |
||||
} |
||||
} |
||||
|
||||
bool checkOpenGLError() { |
||||
bool foundError = false; |
||||
int glErr = glGetError(); |
||||
while (glErr != GL_NO_ERROR) { |
||||
cout << "glError : " << glErr << endl; |
||||
foundError = true; |
||||
glErr = glGetError(); |
||||
} |
||||
return foundError; |
||||
} |
||||
|
||||
string readShaderSource(const char *filePath) { |
||||
string content; |
||||
ifstream fileStream(filePath, ios::in); |
||||
string line = ""; |
||||
while (!fileStream.eof()) { |
||||
getline(fileStream, line); |
||||
content.append(line + "\n"); |
||||
} |
||||
fileStream.close(); |
||||
return content; |
||||
} |
||||
|
||||
using namespace std; |
||||
|
||||
#define numVAOs 1 |
||||
|
||||
GLuint renderingProgram; |
||||
GLuint vao[numVAOs]; |
||||
float x = 0.0f; |
||||
float inc = 0.01f; |
||||
|
||||
GLuint createShaderProgram() { |
||||
|
||||
const char *vshaderSource = readShaderSource("../tri.vert").c_str(); |
||||
// const char *vshaderSource = "#version 430 \n"
|
||||
// "\n"
|
||||
// "void main(void)\n"
|
||||
// "{\n"
|
||||
// " if (gl_VertexID == 0) gl_Position = vec4( 0.25, -0.25, 0.0, 1.0);\n"
|
||||
// "else if (gl_VertexID == 1) gl_Position = vec4(-0.25, -0.25, 0.0, 1.0);\n"
|
||||
// " else gl_Position = vec4( 0.25, 0.25, 0.0, 1.0);}";
|
||||
// cout<<vshaderSource;
|
||||
const char *fshaderSource = readShaderSource("../firstvert.vert").c_str(); |
||||
// cout<<fshaderSource;
|
||||
GLuint vShader = glCreateShader(GL_VERTEX_SHADER); |
||||
GLuint fShader = glCreateShader(GL_FRAGMENT_SHADER); |
||||
|
||||
glShaderSource(vShader, 1, &vshaderSource, NULL); |
||||
glShaderSource(fShader, 1, &fshaderSource, NULL); |
||||
|
||||
printShaderLog(vShader); |
||||
printShaderLog(fShader); |
||||
|
||||
glCompileShader(fShader); |
||||
glCompileShader(vShader); |
||||
|
||||
cout<<"on vShader"; |
||||
printShaderLog(vShader); |
||||
cout<<"on fShader"; |
||||
printShaderLog(fShader); |
||||
|
||||
GLuint vfProgram = glCreateProgram(); |
||||
glAttachShader(vfProgram, vShader); |
||||
glAttachShader(vfProgram, fShader); |
||||
glLinkProgram(vfProgram); |
||||
return vfProgram; |
||||
} |
||||
|
||||
|
||||
void init(GLFWwindow *window) { |
||||
renderingProgram = createShaderProgram(); |
||||
glGenVertexArrays(numVAOs, vao); |
||||
glBindVertexArray(vao[0]); |
||||
} |
||||
|
||||
void display(GLFWwindow *window, double currentTime) { |
||||
|
||||
glClear(GL_DEPTH_BUFFER_BIT); |
||||
glClearColor(0, 0, 0, 1); |
||||
glClear(GL_COLOR_BUFFER_BIT); |
||||
glUseProgram(renderingProgram); |
||||
|
||||
// printProgramLog(renderingProgram);
|
||||
// glPointSize(3);
|
||||
// x += inc;
|
||||
// if (x > 1.0f) inc = -0.01f;
|
||||
// if (x < -1.0f) inc = 0.01f;
|
||||
// cout << x << endl;;
|
||||
// GLuint offsetLoc = glGetUniformLocation(renderingProgram, "offset");
|
||||
// glProgramUniform1f(renderingProgram, offsetLoc, x);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 3); |
||||
|
||||
} |
||||
|
||||
int main(void) { |
||||
if (!glfwInit()) { exit(EXIT_FAILURE); } |
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); |
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); |
||||
GLFWwindow *window = glfwCreateWindow(600, 600, "GLAPP0", NULL, NULL); |
||||
glfwMakeContextCurrent(window); |
||||
if (glewInit() != GLEW_OK) { |
||||
exit(EXIT_FAILURE); |
||||
} |
||||
glfwSwapInterval(1); |
||||
init(window); |
||||
|
||||
checkOpenGLError(); |
||||
while (!glfwWindowShouldClose(window)) { |
||||
display(window, glfwGetTime()); |
||||
glfwSwapBuffers(window); |
||||
glfwPollEvents(); |
||||
} |
||||
|
||||
|
||||
glfwDestroyWindow(window); |
||||
glfwTerminate(); |
||||
exit(EXIT_SUCCESS); |
||||
} |
Loading…
Reference in new issue