⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 光滑质点无网格法SPH并行计算程序
💻 CPP
字号:
//      ___                       ___           ___           ___       ___     //     /\__\          ___        /\__\         /\  \         /\__\     /\  \.   //    /::|  |        /\  \      /::|  |       /::\  \       /:/  /    /::\  \.  //   /:|:|  |        \:\  \    /:|:|  |      /:/\:\  \     /:/  /    /:/\:\  \. //  /:/|:|__|__      /::\__\  /:/|:|  |__   /:/  \:\  \   /:/  /    /::\~\:\  \.// /:/ |::::\__\  __/:/\/__/ /:/ |:| /\__\ /:/__/_\:\__\ /:/__/    /:/\:\ \:\__\.// \/__/~~/:/  / /\/:/  /    \/__|:|/:/  / \:\  /\ \/__/ \:\  \    \:\~\:\ \/__///       /:/  /  \::/__/         |:/:/  /   \:\ \:\__\    \:\  \    \:\ \:\__\. //      /:/  /    \:\__\         |::/  /     \:\/:/  /     \:\  \    \:\ \/__/  //     /:/  /      \/__/         /:/  /       \::/  /       \:\__\    \:\__\.   //     \/__/                     \/__/         \/__/         \/__/     \/__/    // // =============================================================================//                       Minimalist OpenGL Environment// =============================================================================//// Copyright 2007 Balazs Domonkos// // This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.//// Micro GUI support in MinGLE// mingle.h should be included before all other// OpenGL headers#include <mingle.h>using namespace MinGLE;//#include <GL/glut.h> TODO#include <iostream>class SceneRenderer : public WindowListener {	protected:		double mScale;		bool mRender;	public:		SceneRenderer() :			mScale(0.3), mRender(true)		{		}			double *getScalePtr() {			return &mScale;		}		bool *getRenderPtr() {			return &mRender;		}    protected:		virtual bool onRender() {	    	// if(mRender) glutSolidTeapot(mScale); TODO	    		    	// Enable the next window listener to render	    	return false;		}};class GuiDemo : public GuiSheet {	protected:		static Font *mFont;		TextField *fpsText;	public:		GuiDemo(double *scale, bool *render) : GuiSheet("data", "gui/samplegui.xml")		{			// Setup widgets			fpsText = GuiSheet::getWidgetByName<TextField>("myPanel/myText");			GuiSheet::getWidgetByName<CheckBox>("myPanel/myCheckBox")->setUserData(render);			GuiSheet::getWidgetByName<Slider>("myPanel/mySlider")->setUserData(scale);		}				~GuiDemo() {			delete mFont;		}		static void setFont() {			mFont = FontRendering::createFont("data", "fonts/zekton-18.xml");			TextField::setDefaultFont(mFont);		}		virtual bool onKeyEvent(int key, unsigned modifiers, KeyEventState state) {			if (key == 'r' && !modifiers && state != KEY_UP) {				loadFromFile("data", "gui/samplegui.xml");				return true;			}			return GuiSheet::onKeyEvent(key, modifiers, state);		}				// This method is called before rendering the gui		virtual void onUpdate() {			fpsText->setText(StringUtils::toString(mWindow->getFrameRate(), 2) + " FPS");		}};Font *GuiDemo::mFont = 0;int main(int argc, char **argv) {	try {    	// Initialize rendering system    	System::initialize(&argc, argv);    	// Create window    	Window *win = System::createWindow();    	win->setRenderMode(WindowAttributes::RENDER_ON_TIMER);		// Add keyhandler		win->registerWindowListener(new ApplicationKeyHandler());    	// Register the scene renderer    	SceneRenderer *sceneRenderer = new SceneRenderer();    	win->registerWindowListener(sceneRenderer);		// Add navigator		win->registerWindowListener(new ExaminerNavigator());		// Register gui sheet		// Note that the order of the rendering is:		// (ApplicationKeyHandler) -> SceneRenderer -> (ExaminerNavigator) -> GuiSheet		// but the order of input handling is reversed:		// GuiSheet -> ExaminerNavigator -> SceneRenderer -> ApplicationKeyHandler		GuiDemo::setFont();		GuiDemo *guiDemo = new GuiDemo(sceneRenderer->getScalePtr(), sceneRenderer->getRenderPtr());		win->registerWindowListener(guiDemo);    	// Setup OpenGL    	glEnable(GL_DEPTH_TEST);    	glShadeModel(GL_SMOOTH);        	GLfloat position[] = { 3.0f, 3.0f, 3.0f, 1.0f };    	GLfloat diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };    	GLfloat specular[] = {1.0f, 1.0f, 1.0f , 1.0f};    	glEnable(GL_LIGHTING);    	glEnable(GL_LIGHT0);    	glLightfv(GL_LIGHT0, GL_POSITION, position);    	glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);    	glLightfv(GL_LIGHT0, GL_SPECULAR, specular);    	// Enter the event handing loop    	System::enterMainLoop();    		} catch(const Exception& e) {		std::cerr << "Error: " << e.mDescription << " (Thrown in " << e.mFile << ':'			<< e.mMethod << " line " << e.mLine << ')' << std::endl;	}    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -