blobt 4 years ago
parent
commit
f996ce3c8e
  1. BIN
      .vs/shader2/v16/.suo
  2. BIN
      .vs/shader2/v16/Browse.VC.db
  3. 10
      main.cpp
  4. 22
      res/shader/test.fs
  5. 3
      res/shader/test.vs
  6. 4
      shader2.vcxproj.user

BIN
.vs/shader2/v16/.suo

BIN
.vs/shader2/v16/Browse.VC.db

10
main.cpp

@ -90,13 +90,14 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
/*创建program*/
GLuint program = CreateGPUProgram("res/shader/test.vs", "res/shader/test.fs");
GLuint posLocation, texcoordLocation, normalLocation, MLocation, VLocation, PLocation;
GLuint posLocation, texcoordLocation, normalLocation, MLocation, VLocation, PLocation, NMLocation;
posLocation = glGetAttribLocation(program, "pos");
texcoordLocation = glGetAttribLocation(program, "texcoord");
normalLocation = glGetAttribLocation(program, "normal");
MLocation = glGetUniformLocation(program, "M");
VLocation = glGetUniformLocation(program, "V");
PLocation = glGetUniformLocation(program, "P");
NMLocation = glGetUniformLocation(program, "NM");
/*load model*/
unsigned int *indexes = nullptr;
@ -113,7 +114,8 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
/*创建IBO*/
GLuint ibo = CreateBufferObject(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * indexCount, GL_STATIC_DRAW, indexes);
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
//glEnable(GL_DEPTH_TEST);
//创建一个单位矩阵和一个投影矩阵,后面用来传递到shader
float identify[] = {
@ -122,8 +124,9 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
0,0,1,0,
0,0,0,1
};
glm::mat4 model = glm::translate(0.0f, 0.0f, -5.0f);
glm::mat4 model = glm::translate(0.0f, 0.0f, -3.0f);
glm::mat4 projection = glm::perspective(45.0f, 800.0f/600.0f, 0.1f, 1000.0f);
glm::mat4 normalMatrix = glm::inverseTranspose(model);
/*显示窗口*/
ShowWindow(hwnd, SW_SHOW);
@ -146,6 +149,7 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
glUniformMatrix4fv(MLocation, 1, GL_FALSE, glm::value_ptr(model));
glUniformMatrix4fv(VLocation, 1, GL_FALSE, identify);
glUniformMatrix4fv(PLocation, 1, GL_FALSE, glm::value_ptr(projection));
glUniformMatrix4fv(NMLocation, 1, GL_FALSE, glm::value_ptr(normalMatrix));
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableVertexAttribArray(posLocation);

22
res/shader/test.fs

@ -1,3 +1,23 @@
varying vec3 V_Normal;
void main() {
gl_FragColor = vec4(1.0);
vec3 lightPos = vec3(0.0, 10.0, 0.0);
vec3 L=lightPos;
L = normalize(L);
vec3 n = normalize(V_Normal);
//ambient
vec4 AmbientLightColor = vec4(0.2, 0.2, 0.2, 1.0);
vec4 AmbientMaterial = vec4(0.2, 0.2, 0.2, 1.0);
vec4 AmbientColor = AmbientLightColor*AmbientMaterial;
//diffuse
vec4 DiffuseLightColor = vec4(1.0,1.0,1.0,1.0);
vec4 DiffuseMaterial = vec4(0.2, 0.2, 0.2, 1.0);
vec4 diffuseColor = DiffuseLightColor*DiffuseMaterial*max(0.0, dot(L,n));
gl_FragColor = AmbientColor + diffuseColor;
}

3
res/shader/test.vs

@ -5,7 +5,10 @@ attribute vec3 normal;
uniform mat4 M;
uniform mat4 V;
uniform mat4 P;
uniform mat4 NM;
varying vec3 V_Normal;
void main() {
V_Normal = mat3(NM)*normal;
gl_Position = P*V*M*vec4(pos,1.0);
}

4
shader2.vcxproj.user

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
Loading…
Cancel
Save