From fe39c57984035f429031e9578939d91241bfade6 Mon Sep 17 00:00:00 2001 From: blobt Date: Mon, 22 Jun 2020 10:40:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E4=BA=A4=E6=8A=95=E5=BD=B1=E8=A7=86?= =?UTF-8?q?=E9=94=A5=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/shader2/v14/.suo | Bin 46592 -> 46592 bytes frustum.cpp | 26 ++++++++++++++++++++++++++ frustum.h | 1 + main.cpp | 7 +++++-- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.vs/shader2/v14/.suo b/.vs/shader2/v14/.suo index 032b253d5c236c30793d5646156357174f5d46af..aa9fbd52fbfdf16f3f130de89f324db044cdfcc8 100644 GIT binary patch delta 704 zcmZp8!_@GGX@UVG(?mmQM&`*AS%fzx@G!9zoR_+4Ei&>wm_@^#JoT(4a9*! z3{uMvq(z`?5FZF8&u3wsyny2fqX5Wt6B9ZnvE{NlNn8Uvua9vOhXSMGWJM0~1dv@L z&|}D8_&Om=#d6xVlZULoTyL;-oyY(R?9IA1msuwns0;Srk*?h3w^sJo?BwFl$Lh9& zWhZ-kH3?>Z{QKEq Y&A(jPSvE83sWFjZz98dfCcl5_09BUtK>z>% delta 741 zcmZvYO-vI(6oBV#c9*q3vNV;Ju57n0ltc)&X$&Q)#k6Zg4&ZtbZXQg4LlZ*Qa~rNy z?REn3CPogV7voN1jPam>3kRc#R|(#{5KnOFq4iB{6_823%+GuC=6h2)5-LYREd|6$ zYa$Rr-dL}JwxJ|{J*n9Tci5`Xfbta#gb@jeB5|aR!`qn$J97)qVz}-{0!RY6iSS$< z=Lo`cx?>3Ue#Af&qz~yqf{2B5^5_diqFdsg*o$Y5^}H^Zq|Ik&M^}Y4Xs{D`6d+7v zN@$)};Woa1x7*x?SL)jE%BO9v;$B5U2)DV6bPc(UhB#J`Zi^rP8hCb~$^GpVV4pbs^Z?P)o|%@)B=a(JKrAg@WC@DQ~ppD>8Gp{^JG!2f6JOjQ3u zcZD>yqxXDy4BR>$JdTc0Ba)!Ifi$xtRdADr%#0MiKQkhz{rg$3_3f}RTy9?4c$>UW zCkl5}rxjW(4k~4`^K0tx)&5gf+gbtFoCY?Xc`q{I+9!16Zj)yo8XafxWDNW;fydo1 z`J+El9UzZMiHwsaGWYI5e8ye4?gl^i-WWcPv4PxA$<3PJyP)lAT{WnoC;so6+4>x6 zobOkDiI1-n*1X*#QYa)Z>TpwSwo(gY-sR;D&uo5sExpbT3K?K({*l1!+3MnNP7VIy diff --git a/frustum.cpp b/frustum.cpp index d2179d8..4168a89 100644 --- a/frustum.cpp +++ b/frustum.cpp @@ -54,6 +54,32 @@ void Frustum::InitPerspective(float fov, float aspect, float zNear, float zFar) } +void Frustum::InitOrtho(float left, float right, float bottom, float top, float zNear, float zFar) +{ + + + float vertexes[24] = { + left,bottom,-zNear, + right,bottom,-zNear, + right,top,-zNear, + left,top,-zNear, + + left,bottom,-zFar, + right,bottom,-zFar, + right,top,-zFar, + left,top,-zFar, + }; + + mVBO = CreateBufferObject(GL_ARRAY_BUFFER, sizeof(float) * 24, GL_STATIC_DRAW, vertexes); + + unsigned int indexes[] = { + 0,1,1,2,2,3,3,0, //近剪裁面 + 4,5,5,6,6,7,7,4, //远剪裁面 + 0,4,3,7,2,6,1,5 + }; + mIBO = CreateBufferObject(GL_ELEMENT_ARRAY_BUFFER, sizeof(int) * 24, GL_STATIC_DRAW, indexes); +} + void Frustum::Draw(float* M, float* V, float* P) { glUseProgram(mProgram); diff --git a/frustum.h b/frustum.h index 27ab866..31ae382 100644 --- a/frustum.h +++ b/frustum.h @@ -10,5 +10,6 @@ public: Frustum(); void Init(); void InitPerspective(float fov, float aspect, float zNear, float zFar); + void InitOrtho(float left, float right, float bottom, float top, float zNear, float zFar); void Draw(float* M, float* V, float* P); }; \ No newline at end of file diff --git a/main.cpp b/main.cpp index b694569..68f1d79 100644 --- a/main.cpp +++ b/main.cpp @@ -133,6 +133,8 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine glEnable(GL_DEPTH_TEST); glEnable(GL_POINT_SPRITE); glEnable(GL_PROGRAM_POINT_SIZE); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glViewport(0,0, windowWidth, windowHeight); //创建一个单位矩阵和一个投影矩阵,后面用来传递到shader @@ -143,13 +145,14 @@ INT WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine 0,0,0,1 }; - glm::mat4 model = glm::translate(-1.0f, 0.0f, -3.0f)*glm::rotate(-20.0f, 0.0f, 1.0f, 0.0f); + glm::mat4 model = glm::translate(0.0f, 0.0f, -3.0f)*glm::rotate(-20.0f, 0.0f, 1.0f, 0.0f); glm::mat4 projection = glm::perspective(45.0f, (float)windowWidth / (float)windowHeight, 0.1f, 1000.0f); glm::mat4 normalMatrix = glm::inverseTranspose(model); Frustum frustum; frustum.Init(); - frustum.InitPerspective(45.0f, (float)windowWidth / (float)windowHeight, 0.1f, 4.0f); + //frustum.InitPerspective(45.0f, (float)windowWidth / (float)windowHeight, 0.1f, 4.0f); + frustum.InitOrtho(-0.5f, 0.5f,-0.5, 0.5,0.1f,4.0f); /*显示窗口*/ ShowWindow(hwnd, SW_SHOW);