Browse Source

修复framework bug,实现RGB Cube

master
blobt 4 years ago
parent
commit
79bc1ac863
  1. 8
      Res/rgbcube.fs
  2. 12
      Res/rgbcube.vs
  3. 6
      model.cpp
  4. 9
      renderFramework.vcxproj
  5. 65
      renderFramework.vcxproj.filters
  6. 13
      scene.cpp
  7. 2
      shader.cpp

8
Res/rgbcube.fs

@ -0,0 +1,8 @@
#ifdef GL_ES
precision mediump float;
#endif
varying vec4 V_Color;
void main()
{
gl_FragColor=V_Color;
}

12
Res/rgbcube.vs

@ -0,0 +1,12 @@
#ifdef GL_ES
precision mediump float;
#endif;
attribute vec4 position;
uniform mat4 ModelMatrix;
uniform mat4 ViewMatrix;
uniform mat4 ProjectionMatrix;
varying vec4 V_Color;
void main(){
V_Color = vec4(position.x + 0.5, position.y+0.5, position.z +0.5, 1.0);
gl_Position = ProjectionMatrix * ViewMatrix * ModelMatrix * position;
}

6
model.cpp

@ -141,11 +141,11 @@ void Model::createVertexBuffer()
glm::float3 t;
mVertexBuffer->SetSize(vertexCount);
for (int i = 0; i < vertexCount; ++i) {
t = position[vertices[i].position - 1];
t = position[vertices[i].position];
mVertexBuffer->SetPosition(i, t[0], t[1], t[2]);
t = texcoord[vertices[i].texcoord - 1];
t = texcoord[vertices[i].texcoord];
mVertexBuffer->SetTexcoord(i, t[0], t[1]);
t = normal[vertices[i].normal - 1];
t = normal[vertices[i].normal];
mVertexBuffer->SetNormal(i, t[0], t[1], t[2]);
}
}

9
renderFramework.vcxproj

@ -82,6 +82,9 @@
<Link>
<SubSystem>Windows</SubSystem>
</Link>
<PostBuildEvent>
<Command>editbin /subsystem:console $(OutDir)$(ProjectName).exe</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
@ -127,6 +130,7 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="framebufferobject.cpp" />
<ClCompile Include="fullscreenquad.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="model.cpp" />
<ClCompile Include="scene.cpp" />
@ -136,6 +140,7 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="framebufferobject.h" />
<ClInclude Include="fullscreenquad.h" />
<ClInclude Include="ggl.h" />
<ClInclude Include="model.h" />
<ClInclude Include="scene.h" />
@ -143,6 +148,10 @@
<ClInclude Include="utils.h" />
<ClInclude Include="vertexbuffer.h" />
</ItemGroup>
<ItemGroup>
<None Include="Res\rgbcube.fs" />
<None Include="Res\rgbcube.vs" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>

65
renderFramework.vcxproj.filters

@ -5,13 +5,8 @@
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
<Filter Include="framework">
<UniqueIdentifier>{a3e69115-b076-4917-a38c-f8c6f3a7021c}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -21,43 +16,57 @@
<ClCompile Include="scene.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="utils.cpp">
<Filter>源文件</Filter>
<ClCompile Include="framebufferobject.cpp">
<Filter>framework</Filter>
</ClCompile>
<ClCompile Include="vertexbuffer.cpp">
<Filter>源文件</Filter>
<ClCompile Include="fullscreenquad.cpp">
<Filter>framework</Filter>
</ClCompile>
<ClCompile Include="model.cpp">
<Filter>framework</Filter>
</ClCompile>
<ClCompile Include="shader.cpp">
<Filter>源文件</Filter>
<Filter>framework</Filter>
</ClCompile>
<ClCompile Include="model.cpp">
<Filter>源文件</Filter>
<ClCompile Include="utils.cpp">
<Filter>framework</Filter>
</ClCompile>
<ClCompile Include="framebufferobject.cpp">
<Filter>源文件</Filter>
<ClCompile Include="vertexbuffer.cpp">
<Filter>framework</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="ggl.h">
<Filter>源文件</Filter>
</ClInclude>
<ClInclude Include="scene.h">
<Filter>源文件</Filter>
</ClInclude>
<ClInclude Include="utils.h">
<Filter>源文件</Filter>
<ClInclude Include="framebufferobject.h">
<Filter>framework</Filter>
</ClInclude>
<ClInclude Include="vertexbuffer.h">
<Filter>源文件</Filter>
<ClInclude Include="fullscreenquad.h">
<Filter>framework</Filter>
</ClInclude>
<ClInclude Include="shader.h">
<Filter>源文件</Filter>
<ClInclude Include="ggl.h">
<Filter>framework</Filter>
</ClInclude>
<ClInclude Include="model.h">
<Filter>源文件</Filter>
<Filter>framework</Filter>
</ClInclude>
<ClInclude Include="framebufferobject.h">
<Filter>源文件</Filter>
<ClInclude Include="shader.h">
<Filter>framework</Filter>
</ClInclude>
<ClInclude Include="utils.h">
<Filter>framework</Filter>
</ClInclude>
<ClInclude Include="vertexbuffer.h">
<Filter>framework</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Res\rgbcube.fs">
<Filter>源文件</Filter>
</None>
<None Include="Res\rgbcube.vs">
<Filter>源文件</Filter>
</None>
</ItemGroup>
</Project>

13
scene.cpp

@ -1,13 +1,26 @@
#include "scene.h"
#include "utils.h"
#include "model.h"
glm::mat4 viewMatrix, projectionMatrix;
glm::vec3 cameraPos(4.0f, 3.0f, 4.0f);
Model model;
void Init()
{
model.Init("Res/Cube.obj");
model.mShader->Init("Res/rgbcube.vs", "Res/rgbcube.fs");
model.SetPosition(0.0f, 0.0f, 0.0f);
viewMatrix = glm::lookAt(cameraPos, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
}
void SetViewPortSize(float width, float height)
{
projectionMatrix = glm::perspective(50.0f, width/height, 0.1f, 1000.0f);
}
void Draw()
{
glClearColor(0.0f,0.0f,0.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
model.Draw(viewMatrix, projectionMatrix, cameraPos.x, cameraPos.y, cameraPos.z);
}

2
shader.cpp

@ -45,7 +45,7 @@ void Shader::Init(const char * vs, const char * fs)
{
int nFileSize = 0;
const char* vsCode = (char*)LoadFileContent(vs, nFileSize);
const char* fsCode = (char*)LoadFileContent(vs, nFileSize);
const char* fsCode = (char*)LoadFileContent(fs, nFileSize);
GLuint vsShader = CompileShader(GL_VERTEX_SHADER, vsCode);
if (vsShader == 0) {
return;

Loading…
Cancel
Save