BOOL Init3D(HWND hwnd) { const UINT bufferWidth = 640; const UINT bufferHeight = 480; //初始化失败 if(!IRoot.InitD3D( hwnd, bufferWidth, bufferHeight,TRUE))return FALSE; IScene.CreateMesh(Mesh1); IScene.CreateRenderer(Renderer); IScene.CreateCamera(ICamera); IScene.CreateLightManager(LightMgr); IScene.CreateMaterialManager(MatMgr); IScene.CreateTextureManager(TexMgr); IScene.CreateAtmosphere(Atmos); fontMgr.Initialize(); //漫反射贴图 //TexMgr.CreateTextureFromFile(L"Earth.jpg", "Earth", TRUE,0, 0, TRUE); //TexMgr.CreatePureColorTexture("myText", 300, 100, NVECTOR4(0.0f, 0.0f, 0.0f, 0.0f), TRUE); TexMgr.CreateTextureFromFile(L"media/button1.png", "GUI_Button1", TRUE, 0, 0, FALSE); TexMgr.CreateTextureFromFile(L"media/button2.png", "GUI_Button2", TRUE, 0, 0, FALSE); TexMgr.CreateTextureFromFile(L"media/button3.png", "GUI_Button3", TRUE, 0, 0, FALSE); TexMgr.CreateTextureFromFile(L"media/button4.png", "GUI_Button4", TRUE, 0, 0, FALSE); TexMgr.CreateTextureFromFile(L"media/Earth.jpg","Earth", TRUE,0, 0,FALSE); TexMgr.CreateTextureFromFile(L"media/Earth.jpg", "EarthNormalMap", TRUE, 0, 0, TRUE); TexMgr.CreateTextureFromFile(L"media/texture2.jpg", "Wood", TRUE, 0, 0, FALSE); TexMgr.CreateTextureFromFile(L"media/universe2.jpg", "Universe", FALSE, 512, 512, FALSE); TexMgr.CreateTextureFromFile(L"media/bottom-right-conner-title.jpg", "BottomRightTitle", TRUE, 0, 0, FALSE); TexMgr.CreateCubeMapFromDDS(L"media/UniverseEnv.dds", "EnvironmentMap",NOISE_CUBEMAP_SIZE_256x256); TexMgr.ConvertTextureToGreyMap(TexMgr.GetTextureID("EarthNormalMap")); TexMgr.ConvertHeightMapToNormalMap(TexMgr.GetTextureID("EarthNormalMap"),20.0f); //create font texture fontMgr.CreateFontFromFile("media/STXINWEI.ttf", "myFont", 24); fontMgr.InitStaticTextW(0, L"TextBox的CapsLock和大小写/ GUI system需不需要重构一下啊....很多Event是比较重复的....= =", 300, 100, NVECTOR4(0, 1.0f, 0.5f, 1.0f), 0, 0, myText1); myText1.SetTextColor(NVECTOR4(1.0f, 0, 0, 0.5f)); myText1.SetCenterPos(300.0f, 100.0f); fontMgr.InitDynamicTextA(0, "abcdefghijklmnopqrstuvwxyz!@#$%^&*()_<>-+?/+ 1234567890<>?,./{}[]\\", 300, 100, NVECTOR4(0, 1.0f, 0.5f, 1.0f), 0, 0, myText2); myText2.SetTextColor(NVECTOR4(0.5f, 0.3f, 1.0f, 0.5f)); myText2.SetCenterPos(300.0f,400.0f); fontMgr.InitDynamicTextA(0, "fps:000", 200, 100, NVECTOR4(0,0,0,1.0f), 0, 0, myText_fps); myText_fps.SetTextColor(NVECTOR4(0,0.3f,1.0f,0.5f)); myText_fps.SetDiagonal(NVECTOR2(20, 20),NVECTOR2(150, 60)); myText_fps.SetFont(0); Renderer.SetFillMode(NOISE_FILLMODE_SOLID); Renderer.SetCullMode(NOISE_CULLMODE_BACK);//NOISE_CULLMODE_BACK //Mesh1.LoadFile_STL("object.stl"); Mesh1.CreateSphere(5.0f, 30, 30); //Mesh1.CreatePlane(10.0f, 10.0f, 5, 5); Mesh1.SetPosition(0,0,0); ICamera.SetPosition(2.0f,0,0); ICamera.SetLookAt(0,0,0); ICamera.SetViewAngle(MATH_PI / 2.5f, 1.333333333f); ICamera.SetViewFrustumPlane(1.0f, 500.f); //use bounding box of mesh to init camera pos NVECTOR3 AABB_MAX = Mesh1.ComputeBoundingBoxMax(); float rotateRadius = sqrtf(AABB_MAX.x*AABB_MAX.x + AABB_MAX.z*AABB_MAX.z)*1.2f; float rotateY = Mesh1.ComputeBoundingBoxMax().y*1.3f; ICamera.SetPosition(rotateRadius*0.7f, rotateY, rotateRadius*0.7f); ICamera.SetLookAt(0, rotateY / 2, 0); Atmos.SetFogEnabled(FALSE); Atmos.SetFogParameter(7.0f, 8.0f, NVECTOR3(0, 0, 1.0f)); Atmos.CreateSkyDome(4.0f, 4.0f, TexMgr.GetTextureID("Universe")); //Atmos.CreateSkyBox(10.0f, 10.0f, 10.0f, TexMgr.GetIndexByName("EnvironmentMap")); //——————灯光———————— DirLight1.mAmbientColor = NVECTOR3(1.0f,1.0f,1.0f); DirLight1.mDiffuseColor = NVECTOR3(1.0f,1.0f,1.0f); DirLight1.mSpecularColor =NVECTOR3(1.0f,1.0f,1.0f); DirLight1.mDirection = NVECTOR3(0.0f, -0.5f, 1.0f); DirLight1.mSpecularIntensity =1.5f; DirLight1.mDiffuseIntensity = 1.0f; LightMgr.CreateDynamicDirLight(DirLight1); N_Material Mat1; Mat1.baseMaterial.mBaseAmbientColor = NVECTOR3(0.1f, 0.1f,0.1f); Mat1.baseMaterial.mBaseDiffuseColor = NVECTOR3(1.0f, 1.0f, 1.0f); Mat1.baseMaterial.mBaseSpecularColor = NVECTOR3(1.0f, 1.0f,1.0f); Mat1.baseMaterial.mSpecularSmoothLevel = 40; Mat1.baseMaterial.mNormalMapBumpIntensity = 0.3f; Mat1.baseMaterial.mEnvironmentMapTransparency = 0.05f; Mat1.diffuseMapID = TexMgr.GetTextureID("Wood");//"Earth"); Mat1.normalMapID = TexMgr.GetTextureID("EarthNormalMap"); Mat1.cubeMap_environmentMapID = NOISE_MACRO_INVALID_TEXTURE_ID;//TexMgr.GetTextureID("EnvironmentMap"); UINT Mat1_ID = MatMgr.CreateMaterial(Mat1); //set material Mesh1.SetMaterial(Mat1_ID); GraphicObjBuffer.AddRectangle(NVECTOR2(340.0f, 430.0f), NVECTOR2(640.0f, 480.0f), NVECTOR4(0.3f, 0.3f, 1.0f, 1.0f),TexMgr.GetTextureID("BottomRightTitle")); //GUI System GUIMgr.Initialize(bufferWidth, bufferHeight, Renderer, inputE, fontMgr, hwnd); GUIMgr.SetWindowHWND(hwnd); GUIMgr.SetFontManager(fontMgr); GUIMgr.InitButton(GUIButton1); GUIMgr.InitScrollBar(GUIScrollBar1); GUIMgr.InitTextBox(GUITextBox1,0); GUIButton1.SetCenterPos(150.0f, 50.0f); GUIButton1.SetWidth(300.0f); GUIButton1.SetHeight(100.0f); GUIButton1.SetDragableX(TRUE); GUIButton1.SetDragableY(TRUE); GUIButton1.SetTexture(NOISE_GUI_BUTTON_STATE_COMMON,TexMgr.GetTextureID("GUI_Button2")); GUIButton1.SetTexture(NOISE_GUI_BUTTON_STATE_MOUSEON,TexMgr.GetTextureID("GUI_Button3")); GUIButton1.SetTexture(NOISE_GUI_BUTTON_STATE_MOUSEBUTTONDOWN,TexMgr.GetTextureID("GUI_Button4")); GUIButton1.SetEventProcessCallbackFunction(Button1MsgProc); GUIScrollBar1.SetCenterPos(300.0f, 300.0f); GUIScrollBar1.SetWidth(30.0f); GUIScrollBar1.SetHeight(300.0f); GUIScrollBar1.SetTexture_ScrollButton(NOISE_GUI_BUTTON_STATE_COMMON, TexMgr.GetTextureID("GUI_Button1")); GUIScrollBar1.SetTexture_ScrollButton(NOISE_GUI_BUTTON_STATE_MOUSEON, TexMgr.GetTextureID("GUI_Button2")); GUIScrollBar1.SetTexture_ScrollButton(NOISE_GUI_BUTTON_STATE_MOUSEBUTTONDOWN, TexMgr.GetTextureID("GUI_Button3")); GUIScrollBar1.SetTexture_ScrollGroove(TexMgr.GetTextureID("GUI_Button4")); GUIScrollBar1.SetAlignment(FALSE); GUIScrollBar1.SetValue(0.5f); GUITextBox1.SetTextColor({ 1.0f,0,0,1.0f }); GUITextBox1.SetCenterPos(470.0f, 400.0f); GUITextBox1.SetWidth(300.0f); GUITextBox1.SetHeight(80.0f); GUITextBox1.SetFont(0); GUITextBox1.SetMaxWordCount(20); GUITextBox1.SetTexture_BackGround( TexMgr.GetTextureID("GUI_Button3")); GUITextBox1.SetTexture_Cursor( TexMgr.GetTextureID("GUI_Button2")); GUIMgr.Update(); /*Slicer.Step1_LoadPrimitiveMeshFromSTLFile("object.stl"); Slicer.Step2_Intersection(5); Slicer.Step3_GenerateLineStrip();// extremely neccessary for optimization Slicer.Step4_SaveLayerDataToFile("object.LayerOutput");*/ //Slicer.Step3_LoadLineStripsFrom_NOISELAYER_File("object.LayerOutput"); /*NVECTOR3 v1, v2, n; for (UINT i = 0;i < Slicer.GetLineStripCount();i++) { Slicer.GetLineStrip(lineStrip, i); for (UINT j = 0;j < lineStrip.at(i).pointList.size() - 1;j++) { v1 = lineStrip.at(i).pointList.at(j); v2 = lineStrip.at(i).pointList.at(j + 1); n = lineStrip.at(i).normalList.at(j); //vertex GraphicObjBuffer.AddLine3D(v1, v2); //normal GraphicObjBuffer.AddLine3D((v1 + v2) / 2, ((v1 + v2) / 2) + n / 4, NVECTOR4(1.0f, 1.0f, 1.0f, 1.0f), NVECTOR4(1.0f, 0.2f, 0.2f, 1.0f)); } }*/ return TRUE; };