//----------------------------------------------------------------------- Technique* Material::createTechnique(void) { Technique *t = OGRE_NEW Technique(this); mTechniques.push_back(t); mCompilationRequired = true; return t; }
bool Effect::LoadEffectFile(const std::string& filename) { // Release the old effect and clear the old techniques SafeRelease(mEffect); mTechniques.clear(); // Load and compile the new effect UINT shaderFlags = D3D10_SHADER_ENABLE_STRICTNESS; #ifdef DEBUG_MODE shaderFlags |= D3D10_SHADER_DEBUG; #endif ID3D10Blob* errors = NULL; HRESULT result = D3DX10CreateEffectFromFile(filename.c_str(), NULL, NULL, "fx_4_0", shaderFlags, 0, mDevice, NULL, NULL, &mEffect, &errors, NULL); // See if load and compile was successful if (FAILED(result)) { // If we have compile errors, print them if (errors != NULL) { MessageBox(NULL, static_cast<char*>(errors->GetBufferPointer()), "Error", MB_OK | MB_ICONERROR); SafeRelease(errors); } return false; } // Store all techniques D3D10_EFFECT_DESC effectDescription; mEffect->GetDesc(&effectDescription); mTechniques.reserve(effectDescription.Techniques); for (unsigned int i = 0; i < effectDescription.Techniques; ++i) { mTechniques.push_back(Technique(mEffect->GetTechniqueByIndex(i))); } return true; }
#include <GeneratedMesh.h> #include <Shader.h> #include <Technique.h> #include <Scene.h> #include <math.h> #include <unistd.h> #define WINDOW_WIDTH 640 #define WINDOW_HEIGHT 480 //Declare scene elements Scene scene; Camera* eye = NULL; Technique tech = Technique("Assets/shader.vs", "Assets/shader.fs"); Technique solid = Technique("Assets/shader.vs", "Assets/solid.fs"); Pipeline pipeline; void Render() { //Set up glClearColor(0.0f, 0.2f, 0.4f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Render scene tech.renderScene(&scene); glutSwapBuffers(); //Reset controls