void Load() { /* Load shader */ char shaderName_vsh[] = "Shader.vsh"; char shaderName_fsh[] = "Shader.fsh"; CompileShader(&g_Shader, shaderName_vsh, shaderName_fsh); /* Load mesh */ CreateMesh(&g_Mesh[0], kCommonMesh_Cube); CreateMesh(&g_Mesh[1], kCommonMesh_Square); // Cube g_Cube.mesh = &g_Mesh[0]; DefaultTransform(&g_Cube.transform); g_Cube.transform.position.z = 40.0f; g_Cube.transform.axis = GLKVector3Make(0.0f, 1.0f, 0.0f); //g_Cube.transform.scale = GLKVector3Make(10.0f, 10.0f, 10.0f); g_Cube.transform.angle = 0.0f; g_Cube.transform.parent = &g_WorldTrans; g_Cube.color = GLKVector4Make(0.4f, 0.6f, 0.7f, 0.8f); // Mask g_Mask.mesh = &g_Mesh[1]; DefaultTransform(&g_Mask.transform); g_Mask.transform.position = GLKVector3Make(0.0f, 2.0f, 40.0f); g_Mask.transform.axis = GLKVector3Make(1.0f, 0.0f, 0.0f); g_Mask.transform.angle = 90.0f; g_Mask.transform.scale = GLKVector3Make(2.0f, 2.0f, 1.0f); g_Mask.transform.parent = &g_WorldTrans; g_Mask.color = GLKVector4Make(0.0f, 0.0f, 0.0f, 0.8f); /* Set gl states */ glClearColor(0.5f, 0.5f, 0.5f, 1.0f); glEnable(GL_DEPTH_TEST); }
int main(int argc, char **argv) { MPI_Comm comm; DM dm; AppCtx options; PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL,help);if (ierr) return ierr; comm = PETSC_COMM_WORLD; ierr = ProcessOptions(comm, &options);CHKERRQ(ierr); ierr = CreateMesh(comm, &options, &dm);CHKERRQ(ierr); switch (options.test) { case 0: ierr = test0(dm, &options);CHKERRQ(ierr); break; case 1: ierr = test1(dm, &options);CHKERRQ(ierr); break; case 2: ierr = test2(dm, &options);CHKERRQ(ierr); break; case 3: ierr = test3(dm, &options);CHKERRQ(ierr); break; case 4: ierr = test4(dm, &options);CHKERRQ(ierr); break; case 5: ierr = test5(dm, &options);CHKERRQ(ierr); break; case 6: ierr = test6(dm, &options);CHKERRQ(ierr); break; case 7: ierr = test7(dm, &options);CHKERRQ(ierr); break; case 8: ierr = test8(dm, &options);CHKERRQ(ierr); break; default: SETERRQ1(comm, PETSC_ERR_ARG_OUTOFRANGE, "No such test: %D", options.test); } ierr = DMDestroy(&dm);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }
int main(int argc, char **argv) { DM dm; /* Problem specification */ SNES snes; /* Nonlinear solver */ Vec u; /* Solutions */ AppCtx user; /* User-defined work context */ PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL,help);if (ierr) return ierr; ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); /* Primal system */ ierr = SNESCreate(PETSC_COMM_WORLD, &snes);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &dm);CHKERRQ(ierr); ierr = SNESSetDM(snes, dm);CHKERRQ(ierr); ierr = SetupFE(dm, user.dim, user.simplex, "displacement", SetupPrimalProblem, &user);CHKERRQ(ierr); ierr = DMCreateGlobalVector(dm, &u);CHKERRQ(ierr); ierr = VecSet(u, 0.0);CHKERRQ(ierr); ierr = PetscObjectSetName((PetscObject) u, "displacement");CHKERRQ(ierr); ierr = DMPlexSetSNESLocalFEM(dm, &user, &user, &user);CHKERRQ(ierr); ierr = SNESSetFromOptions(snes);CHKERRQ(ierr); ierr = DMSNESCheckFromOptions(snes, u, NULL, NULL);CHKERRQ(ierr); ierr = SNESSolve(snes, NULL, u);CHKERRQ(ierr); ierr = SNESGetSolution(snes, &u);CHKERRQ(ierr); ierr = VecViewFromOptions(u, NULL, "-displacement_view");CHKERRQ(ierr); /* Cleanup */ ierr = VecDestroy(&u);CHKERRQ(ierr); ierr = SNESDestroy(&snes);CHKERRQ(ierr); ierr = DMDestroy(&dm);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }
sint CRenderer::LoadMesh( const char* szFilename ) { /********************* File Format ***********************\ float fVertexSize float fVertexCount uint nIndexSize uint nIndexCount float fVerts[] uint nIndices[] \*********************************************************/ uint nVertexStride; uint nVertexCount; uint nIndexSize; uint nIndexCount; byte* pData; FILE* pFile = fopen( szFilename, "rb" ); fread( &nVertexStride, sizeof( nVertexStride ), 1, pFile ); fread( &nVertexCount, sizeof( nVertexCount ), 1, pFile ); fread( &nIndexSize, sizeof( nIndexSize ), 1, pFile ); nIndexSize = (nIndexSize == 32 ) ? 4 : 2; fread( &nIndexCount, sizeof( nIndexCount ), 1, pFile ); pData = new byte[ (nVertexStride * nVertexCount) + (nIndexCount * nIndexSize) ]; fread( pData, nVertexStride, nVertexCount, pFile ); fread( pData + (nVertexStride * nVertexCount), nIndexSize, nIndexCount, pFile ); fclose( pFile ); sint nMesh = CreateMesh( nVertexStride, nVertexCount, nIndexSize, nIndexCount, pData, pData + (nVertexStride * nVertexCount) ); delete [] pData; return nMesh; }
class FMesh* FPrimitiveBuilder::GenerateDisc(int SubdivisionNumber, class FTexture* Texture, const glm::mat4& Transform, const glm::vec4& Colour /*= glm::vec4(1.0f)*/) { FMesh* Mesh = CreateMesh(Texture, Colour); const float kHalfCubeSize = 0.5f; float Theta = 0.0f; float DeltaTheta = (float) ((2 * M_PI) / SubdivisionNumber); for (int i = 0; i < SubdivisionNumber; i++) { float PreviousTheta = Theta; Theta += DeltaTheta; glm::vec3 Positions[3] = { glm::vec3(cos(PreviousTheta), sin(PreviousTheta), 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(cos(Theta), sin(Theta), 0.0f) }; glm::vec3 Normal(0.0f, 0.0f, 1.0f); for (int k = 0; k < 3; k++) { Mesh->AddVertexData(Positions[k], Normal, glm::vec2(Positions[k].x * 0.5f + 0.5f, Positions[k].y * 0.5f + 0.5f)); } } Mesh->TransformVertices(Transform); return Mesh; }
/*! * @brief Initilize everything SDL needs at the start */ void GLGraphics::Init(void) //Initilize SDL { // Register the components needed for graphics. RegisterComponent(MC_Transform); RegisterComponent(MC_Sprite); CreateMesh(); // Create the default shader. ShaderPtr defaultShader(new GLShader()); // Load the shader files for the default shader. defaultShader->LoadShaderFile("dvert.glsl", "dfrag.glsl", 0); // Compile the shaders. defaultShader->Compile(); // Find the variables in the shaders that will be modified by the end-users. defaultShader->FindUniforms("model"); defaultShader->FindUniforms("view"); defaultShader->FindUniforms("proj"); defaultShader->FindUniforms("color"); // Add the shader to the ShaderMap. addShader("Box", defaultShader); }
bool CreateScene(KFbxSdkManager *pSdkManager, KFbxScene* pScene) { // create scene info KFbxDocumentInfo* sceneInfo = KFbxDocumentInfo::Create(pSdkManager,"SceneInfo"); sceneInfo->mTitle = "Mesh"; sceneInfo->mSubject = "Mesh thing"; sceneInfo->mAuthor = "Team opennirospcleigenubuntuvmware"; sceneInfo->mRevision = "0.1"; sceneInfo->mKeywords = "mesh"; sceneInfo->mComment = "none"; // we need to add the sceneInfo before calling AddThumbNailToScene because // that function is asking the scene for the sceneInfo. pScene->SetSceneInfo(sceneInfo); KFbxNode* lPatch = CreateMesh(pScene, "Patch"); KFbxNode* lSkeletonRoot = CreateSkeleton(pScene, "Skeleton"); // Build the node tree. KFbxNode* lRootNode = pScene->GetRootNode(); lRootNode->AddChild(lPatch); lRootNode->AddChild(lSkeletonRoot); /* // Store poses LinkPatchToSkeleton(pScene, lPatch, lSkeletonRoot); StoreBindPose(pScene, lPatch, lSkeletonRoot); StoreRestPose(pScene, lSkeletonRoot); // Animation AnimateSkeleton(pScene, lSkeletonRoot); */ return true; }
int main() { Window window; Camera camera(window.GetAspectRatio(), glm::vec3(2.0, 2.0, 1.0)); Mesh* sphereMesh = CreateMesh("sphere.obj", "sphere"); Shader defaultShader("Shaders/defaultShader.vert", "Shaders/defaultShader.frag", "defaultShader"); SetupMesh(sphereMesh, defaultShader); do { window.Clear(); DrawMesh(*sphereMesh, camera, defaultShader); camera.front = sphereMesh->position; sphereMesh->rotY -= 0.016; { if (glfwGetKey(window.GetWindowInstance(), GLFW_KEY_W) == GLFW_PRESS) { sphereMesh->position.x -= 0.16; } else if (glfwGetKey(window.GetWindowInstance(), GLFW_KEY_S) == GLFW_PRESS) { sphereMesh->position.x += 0.16; } if (glfwGetKey(window.GetWindowInstance(), GLFW_KEY_A) == GLFW_PRESS) { sphereMesh->position.z += 0.16; } else if (glfwGetKey(window.GetWindowInstance(), GLFW_KEY_D) == GLFW_PRESS) { sphereMesh->position.z -= 0.16; } } window.Update(); } while (!window.Closed() && glfwGetKey(window.GetWindowInstance(), GLFW_KEY_ESCAPE) != GLFW_PRESS); delete sphereMesh; }
sint CRenderer::CreateMesh( void ) { // If the cube has already been created, return it if( m_nDefaultMesh != INVALID_HANDLE ) { return m_nDefaultMesh; } ////////////////////////////////////////// // Define the index buffer uint16 indices[] = { 3,1,0, 2,1,3, 6,4,5, 7,4,6, 11,9,8, 10,9,11, 14,12,13, 15,12,14, 19,17,16, 18,17,19, 22,20,21, 23,20,22 }; m_nDefaultMesh = CreateMesh( VPosNormalTex::VertexStride, 24, sizeof(uint16), ARRAY_LENGTH( indices ), GetDefaultMeshData(), indices, GFX_BUFFER_USAGE_IMMUTABLE ); return m_nDefaultMesh; }
const char* PezInitialize(int width, int height) { BuddhaMesh = CreateMesh("buddha.ctm"); QuadVbo = CreateQuad(-1, -1, 1, 1); #ifdef LIGHTING DepthProgram = CreateProgram("Glass.Vertex", "Glass.Fragment.Lighting" SUFFIX); AbsorptionProgram = CreateProgram("Glass.Vertex.Quad", "Glass.Fragment.Blit" SUFFIX); #else DepthProgram = CreateProgram("Glass.Vertex", "Glass.Fragment.Depth" SUFFIX); AbsorptionProgram = CreateProgram("Glass.Vertex.Quad", "Glass.Fragment.Absorption" SUFFIX); #endif // Create a floating-point render target: GLuint textureHandle; glGenTextures(1, &textureHandle); glBindTexture(GL_TEXTURE_2D, textureHandle); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); #ifdef LIGHTING glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 768, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); #elif defined(__IPAD__) glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 768, 1024, 0, GL_LUMINANCE, GL_HALF_FLOAT_OES, 0); #else glTexImage2D(GL_TEXTURE_2D, 0, GL_RG16F, 768, 1024, 0, GL_RG, GL_FLOAT, 0); #endif PezCheckCondition(GL_NO_ERROR == glGetError(), "This passes on Mac OS X and iOS."); OffscreenTexture = textureHandle; GLuint fboHandle; glGenFramebuffers(1, &fboHandle); glBindFramebuffer(GL_FRAMEBUFFER, fboHandle); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureHandle, 0); #ifdef LIGHTING GLuint depthRenderbuffer; glGenRenderbuffers(1, &depthRenderbuffer); glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); #endif PezCheckCondition(GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER), "This asserts on iOS and passes on Mac OS X."); OffscreenFbo = fboHandle; glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindRenderbuffer(GL_RENDERBUFFER, 0); // Set up the projection matrix: const float HalfWidth = 0.5; const float HalfHeight = HalfWidth * PEZ_VIEWPORT_HEIGHT / PEZ_VIEWPORT_WIDTH; ProjectionMatrix = M4MakeFrustum(-HalfWidth, +HalfWidth, -HalfHeight, +HalfHeight, 5, 20); return "Glass Demo"; }
csPtr<iMeshWrapper> GeneralMeshBuilder::CreateMesh ( iEngine* engine, iSector* sector, const char* name, const char* factoryname) { iMeshFactoryWrapper* factory = engine->FindMeshFactory (factoryname); if (!factory) return 0; return CreateMesh (engine, sector, name, factory); }
void Engine1D::StartSimulation(Mesh1D &mesh) { this->number_of_states = this->time_length / this->time_step; CreateMesh(mesh); this->CreateTime(); this->CreateInitialState(mesh); this->Solve(mesh); }
void TextureText::SetString(const char* str) { strcpy(text, str); //strcpy(text,TEX_TEXT_MAX_STRING_LENGTH,str); GenerateLetters(); CreateMesh(); }
Mesh* CreateSolidPlane(float xSize, float zSize, int xSegments, int zSegments, const glm::mat4& transform) { int numVertices = (xSegments + 1) * (zSegments + 1); std::vector<VertexPositionNormal> vertexData(numVertices); float xStep = xSize / xSegments; float zStep = zSize / zSegments; VertexPositionNormal* vertexPtr = &vertexData[0]; float z = -0.5f * zSize; for (int j = 0; j <= zSegments; j++) { float x = -0.5f * xSize; for (int i = 0; i <= xSegments; i++) { vertexPtr->pos.x = x; vertexPtr->pos.y = 0; vertexPtr->pos.z = z; vertexPtr->normal.x = 0; vertexPtr->normal.y = 1; vertexPtr->normal.z = 0; ++vertexPtr; x += xStep; } z += zStep; } int numTriangles = 2 * xSegments * zSegments; int numElements = 3 * numTriangles; std::vector<unsigned> indexData(numElements); // use 32-bit indices for large planes!!!11!!! unsigned* indexPtr = &indexData[0]; unsigned e = 0; for (int j = 0; j < zSegments; j++) { for (int i = 0; i < xSegments; i++) { // the four corners of this "square" unsigned e = (xSegments + 1) * j + i; unsigned e1 = e; unsigned e2 = e + 1; unsigned e3 = e + xSegments + 1; unsigned e4 = e + xSegments + 2; // triangle 1 *indexPtr++ = e1; *indexPtr++ = e3; *indexPtr++ = e4; // triangle 2 *indexPtr++ = e1; *indexPtr++ = e4; *indexPtr++ = e2; ++e; } ++e; } return CreateMesh(GL_TRIANGLES, vertexData, indexData); }
class FMesh* FPrimitiveBuilder::GenerateCube(class FTexture* Texture, const glm::mat4& Transform, const glm::vec4& Colour) { FMesh* Mesh = CreateMesh(Texture, Colour); const float kHalfCubeSize = 0.5f; // Bottom face. Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, -1.0f, 0.0f), glm::vec2(1.0f, 1.0f)); // Top face Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 1.0f, 0.0f), glm::vec2(1.0f, 1.0f)); // Front face Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec2(1.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(0.0f, 0.0f, 1.0f), glm::vec2(0.0f, 1.0f)); // Back face Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec2(1.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(0.0f, 0.0f, -1.0f), glm::vec2(0.0f, 1.0f)); // Right face Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec2(1.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(1.0f, 0.0f, 0.0f), glm::vec2(1.0f, 1.0f)); // Left face Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, kHalfCubeSize), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec2(0.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec2(1.0f, 1.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, -kHalfCubeSize, -kHalfCubeSize), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec2(0.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, -kHalfCubeSize), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec2(1.0f, 0.0f)); Mesh->AddVertexData(glm::vec3(-kHalfCubeSize, kHalfCubeSize, kHalfCubeSize), glm::vec3(-1.0f, 0.0f, 0.0f), glm::vec2(1.0f, 1.0f)); Mesh->TransformVertices(Transform); return Mesh; }
// Rebuild void Chunk::RebuildMesh() { m_isRebuildingMesh = true; if (m_pMesh != NULL) { m_pRenderer->ClearMesh(m_pMesh); m_pMesh = NULL; } CreateMesh(); // Update our wall flags, so that our neighbors can check if they are surrounded UpdateWallFlags(); UpdateSurroundedFlag(); Chunk* pChunkXMinus = m_pChunkManager->GetChunk(m_gridX - 1, m_gridY, m_gridZ); Chunk* pChunkXPlus = m_pChunkManager->GetChunk(m_gridX + 1, m_gridY, m_gridZ); Chunk* pChunkYMinus = m_pChunkManager->GetChunk(m_gridX, m_gridY - 1, m_gridZ); Chunk* pChunkYPlus = m_pChunkManager->GetChunk(m_gridX, m_gridY + 1, m_gridZ); Chunk* pChunkZMinus = m_pChunkManager->GetChunk(m_gridX, m_gridY, m_gridZ - 1); Chunk* pChunkZPlus = m_pChunkManager->GetChunk(m_gridX, m_gridY, m_gridZ + 1); if (pChunkXMinus != NULL && pChunkXMinus->IsSetup() == true) pChunkXMinus->UpdateSurroundedFlag(); if (pChunkXPlus != NULL && pChunkXPlus->IsSetup() == true) pChunkXPlus->UpdateSurroundedFlag(); if (pChunkYMinus != NULL && pChunkYMinus->IsSetup() == true) pChunkYMinus->UpdateSurroundedFlag(); if (pChunkYPlus != NULL && pChunkYPlus->IsSetup() == true) pChunkYPlus->UpdateSurroundedFlag(); if (pChunkZMinus != NULL && pChunkZMinus->IsSetup() == true) pChunkZMinus->UpdateSurroundedFlag(); if (pChunkZPlus != NULL && pChunkZPlus->IsSetup() == true) pChunkZPlus->UpdateSurroundedFlag(); // Rebuild neighbours if (m_rebuildNeighours) { if (pChunkXMinus != NULL && pChunkXMinus->IsSetup() == true) pChunkXMinus->SetNeedsRebuild(true, false); if (pChunkXPlus != NULL && pChunkXPlus->IsSetup() == true) pChunkXPlus->SetNeedsRebuild(true, false); if (pChunkYMinus != NULL && pChunkYMinus->IsSetup() == true) pChunkYMinus->SetNeedsRebuild(true, false); if (pChunkYPlus != NULL && pChunkYPlus->IsSetup() == true) pChunkYPlus->SetNeedsRebuild(true, false); if (pChunkZMinus != NULL && pChunkZMinus->IsSetup() == true) pChunkZMinus->SetNeedsRebuild(true, false); if (pChunkZPlus != NULL && pChunkZPlus->IsSetup() == true) pChunkZPlus->SetNeedsRebuild(true, false); m_rebuildNeighours = false; } m_numRebuilds++; m_rebuild = false; }
int main(int argc, char **argv) { SNES snes; /* nonlinear solver */ Mat A,J; /* Jacobian,preconditioner matrix */ Vec u,r; /* solution, residual vectors */ AppCtx user; /* user-defined work context */ PetscReal error = 0.0; /* L_2 error in the solution */ PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL, help);CHKERRQ(ierr); ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); ierr = SNESCreate(PETSC_COMM_WORLD, &snes);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);CHKERRQ(ierr); ierr = SNESSetDM(snes, user.dm);CHKERRQ(ierr); ierr = SetupExactSolution(&user);CHKERRQ(ierr); ierr = SetupQuadrature(&user);CHKERRQ(ierr); ierr = SetupSection(user.dm, &user);CHKERRQ(ierr); ierr = DMCreateGlobalVector(user.dm, &u);CHKERRQ(ierr); ierr = VecDuplicate(u, &r);CHKERRQ(ierr); ierr = DMSetMatType(user.dm,MATAIJ);CHKERRQ(ierr); ierr = DMCreateMatrix(user.dm, &J);CHKERRQ(ierr); A = J; ierr = DMSNESSetFunctionLocal(user.dm, (PetscErrorCode (*)(DM,Vec,Vec,void*))FormFunctionLocal,&user);CHKERRQ(ierr); ierr = DMSNESSetJacobianLocal(user.dm, (PetscErrorCode (*)(DM,Vec,Mat,Mat,void*))FormJacobianLocal,&user);CHKERRQ(ierr); ierr = SNESSetFromOptions(snes);CHKERRQ(ierr); { PetscReal res; /* Check discretization error */ ierr = PetscPrintf(PETSC_COMM_WORLD, "Initial guess\n");CHKERRQ(ierr); ierr = VecView(u, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); /* ierr = ComputeError(u, &error, &user);CHKERRQ(ierr); */ ierr = PetscPrintf(PETSC_COMM_WORLD, "L_2 Error: %g\n", error);CHKERRQ(ierr); /* Check residual */ ierr = SNESComputeFunction(snes,u,r);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD, "Initial Residual\n");CHKERRQ(ierr); ierr = VecChop(r, 1.0e-10);CHKERRQ(ierr); ierr = VecView(r, PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); ierr = VecNorm(r, NORM_2, &res);CHKERRQ(ierr); ierr = PetscPrintf(PETSC_COMM_WORLD, "L_2 Residual: %g\n", res);CHKERRQ(ierr); } ierr = VecDestroy(&u);CHKERRQ(ierr); ierr = VecDestroy(&r);CHKERRQ(ierr); ierr = SNESDestroy(&snes);CHKERRQ(ierr); ierr = DMDestroy(&user.dm);CHKERRQ(ierr); ierr = PetscFinalize(); return 0; }
void UIScreenEldMirror::SetBodyMesh( const SimpleString& MeshName, const SimpleString& TextureName ) { SafeDelete( m_BodyMesh ); m_BodyMesh = CreateMesh( MeshName, TextureName ); ASSERT( m_RigMesh ); m_BodyMesh->CopyAnimationsFrom( m_RigMesh ); PlayAnimation(); }
int main(int argc, char **argv) { DM dm, subdm, auxdm; Vec la; AppCtx user; PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL,help);if (ierr) return ierr; ierr = ProcessOptions(&user);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &dm);CHKERRQ(ierr); ierr = SetupDiscretization(dm, user.dim, user.cellSimplex, &user);CHKERRQ(ierr); /* Volumetric Mesh Projection */ ierr = TestFunctionProjection(dm, NULL, NULL, NULL, "Volumetric Primary", &user);CHKERRQ(ierr); ierr = TestFieldProjection(dm, NULL, NULL, NULL, "Volumetric Primary", &user);CHKERRQ(ierr); if (user.auxfield) { /* Volumetric Mesh Projection with Volumetric Data */ ierr = CreateAuxiliaryData(dm, &auxdm, &la, &user);CHKERRQ(ierr); ierr = TestFunctionProjection(dm, auxdm, NULL, la, "Volumetric Primary and Volumetric Auxiliary", &user);CHKERRQ(ierr); ierr = TestFieldProjection(dm, auxdm, NULL, la, "Volumetric Primary and Volumetric Auxiliary", &user);CHKERRQ(ierr); ierr = VecDestroy(&la);CHKERRQ(ierr); /* Update of Volumetric Auxiliary Data with primary Volumetric Data */ ierr = DMGetLocalVector(dm, &la);CHKERRQ(ierr); ierr = VecSet(la, 1.0);CHKERRQ(ierr); ierr = TestFieldProjection(auxdm, dm, NULL, la, "Volumetric Auxiliary Update with Volumetric Primary", &user);CHKERRQ(ierr); ierr = DMRestoreLocalVector(dm, &la);CHKERRQ(ierr); ierr = DMDestroy(&auxdm);CHKERRQ(ierr); } if (user.submesh) { DMLabel bdLabel; /* Boundary Mesh Projection */ ierr = CreateBoundaryMesh(dm, &bdLabel, &subdm, &user);CHKERRQ(ierr); ierr = TestFunctionProjection(subdm, NULL, NULL, NULL, "Boundary Primary", &user);CHKERRQ(ierr); ierr = TestFieldProjection(subdm, NULL, NULL, NULL, "Boundary Primary", &user);CHKERRQ(ierr); if (user.auxfield) { /* Boundary Mesh Projection with Boundary Data */ ierr = CreateAuxiliaryData(subdm, &auxdm, &la, &user);CHKERRQ(ierr); ierr = TestFunctionProjection(subdm, auxdm, NULL, la, "Boundary Primary and Boundary Auxiliary", &user);CHKERRQ(ierr); ierr = TestFieldProjection(subdm, auxdm, NULL, la, "Boundary Primary and Boundary Auxiliary", &user);CHKERRQ(ierr); ierr = VecDestroy(&la);CHKERRQ(ierr); ierr = DMDestroy(&auxdm);CHKERRQ(ierr); /* Volumetric Mesh Projection with Boundary Data */ ierr = CreateAuxiliaryData(subdm, &auxdm, &la, &user);CHKERRQ(ierr); ierr = TestFunctionProjection(dm, auxdm, bdLabel, la, "Volumetric Primary and Boundary Auxiliary", &user);CHKERRQ(ierr); ierr = TestFieldProjection(dm, auxdm, bdLabel, la, "Volumetric Primary and Boundary Auxiliary", &user);CHKERRQ(ierr); ierr = VecDestroy(&la);CHKERRQ(ierr); ierr = DMDestroy(&auxdm);CHKERRQ(ierr); } ierr = DMLabelDestroy(&bdLabel);CHKERRQ(ierr); ierr = DMDestroy(&subdm);CHKERRQ(ierr); } ierr = DMDestroy(&dm);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }
void FbxParser::LoadMesh(GameObjectPtr node, FbxNode * fbxNode) { FbxMesh* fbxMesh = static_cast<FbxMesh*>(fbxNode->GetNodeAttribute()); auto mesh = CreateMesh(node, fbxNode); auto renderer = MeshRender::Create(); renderer->mMesh = mesh; renderer->mMaterial = Material::Create(); node->AddComponent(renderer); }
void UIWidgetFrame::UpdateRender() { DEBUGASSERT( m_UIManager->DEBUGIsSafeToUpdateRender( m_LastRenderedTime ) ); SafeDelete( m_Mesh ); IRenderer* const pRenderer = m_UIManager->GetRenderer(); m_Mesh = CreateMesh(); m_Mesh->SetMaterialDefinition( m_Material, pRenderer ); m_Mesh->SetTexture( 0, m_Texture ); m_Mesh->SetMaterialFlags( m_RenderInWorld ? MAT_INWORLDHUD : MAT_HUD ); }
int main(int argc, char **argv) { AppCtx user; /* user-defined work context */ PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, PETSC_NULL, help);CHKERRQ(ierr); ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);CHKERRQ(ierr); ierr = DMDestroy(&user.dm);CHKERRQ(ierr); ierr = PetscFinalize(); return 0; }
int main(int argc, char **argv) { SNES snes; /* nonlinear solver */ DM dm; /* problem definition */ Vec u, r; /* solution and residual */ AppCtx user; /* user-defined work context */ PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL,help);if (ierr) return ierr; ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); ierr = PetscBagCreate(PETSC_COMM_WORLD, sizeof(Parameter), &user.bag);CHKERRQ(ierr); ierr = SetupParameters(&user);CHKERRQ(ierr); ierr = SNESCreate(PETSC_COMM_WORLD, &snes);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &dm);CHKERRQ(ierr); ierr = SNESSetDM(snes, dm);CHKERRQ(ierr); ierr = DMSetApplicationContext(dm, &user);CHKERRQ(ierr); /* Setup problem */ ierr = PetscMalloc(2 * sizeof(void (*)(const PetscReal[], PetscScalar *, void *)), &user.exactFuncs);CHKERRQ(ierr); ierr = SetupDiscretization(dm, &user);CHKERRQ(ierr); ierr = DMPlexCreateClosureIndex(dm, NULL);CHKERRQ(ierr); ierr = DMCreateGlobalVector(dm, &u);CHKERRQ(ierr); ierr = VecDuplicate(u, &r);CHKERRQ(ierr); ierr = DMPlexSetSNESLocalFEM(dm,&user,&user,&user);CHKERRQ(ierr); ierr = SNESSetFromOptions(snes);CHKERRQ(ierr); { Parameter *param; void *ctxs[2]; ierr = PetscBagGetData(user.bag, (void **) ¶m);CHKERRQ(ierr); ctxs[0] = ctxs[1] = param; ierr = DMProjectFunction(dm, 0.0, user.exactFuncs, ctxs, INSERT_ALL_VALUES, u);CHKERRQ(ierr); ierr = PetscObjectSetName((PetscObject) u, "Exact Solution");CHKERRQ(ierr); ierr = VecViewFromOptions(u, NULL, "-exact_vec_view");CHKERRQ(ierr); } ierr = DMSNESCheckFromOptions(snes, u, NULL, NULL);CHKERRQ(ierr); ierr = VecSet(u, 0.0);CHKERRQ(ierr); ierr = PetscObjectSetName((PetscObject) u, "Solution");CHKERRQ(ierr); ierr = SNESSolve(snes, NULL, u);CHKERRQ(ierr); ierr = VecViewFromOptions(u, NULL, "-sol_vec_view");CHKERRQ(ierr); ierr = VecDestroy(&u);CHKERRQ(ierr); ierr = VecDestroy(&r);CHKERRQ(ierr); ierr = PetscFree(user.exactFuncs);CHKERRQ(ierr); ierr = DMDestroy(&dm);CHKERRQ(ierr); ierr = SNESDestroy(&snes);CHKERRQ(ierr); ierr = PetscBagDestroy(&user.bag);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }
void FntLabel::UpdateMesh() { if (mString.IsEmpty()) { if (mFont->HasSinglePage() && mFont->IsFixed()) { SetMesh(nullptr); SetMaterial(nullptr); } if (!mManagedNodes.IsEmpty()) { DeleteAllChilds(NodeRemoveFlags::OnlyManaged); } SetSize(Size2F::Zero); mInternalMeshes.Clear(); return; } else if (mRenderingObject.Mesh() ==nullptr) { CreateMesh(); } Size2F outSize; if (mIsMultipleLine) { TextLayouter::LayoutMultipleLineText(mInternalMeshes, mInternalPages, outSize, *mFont, mString, mAlignment, mRestrictSize, this, mIsStatic); } else { TextLayouter::LayoutSingleLineText(mInternalMeshes, mInternalPages, outSize, *mFont, mString, mAlignment, mRestrictSize, this, mIsStatic); } SetSize(outSize); //check if there are some mesh has no char after layout,this is rarely hit size_t meshCount = mInternalMeshes.Count(); if (meshCount>1) { List<size_t> unusedIndices; List<INode*> unusedSprites; FOR_EACH_SIZE(i, meshCount) { BaseFontMesh* mesh = mInternalMeshes[i]; if (!mesh->HasChars()) { unusedIndices.Add(i); unusedSprites.Add(mManagedNodes[i]); } }
int main(int argc, char **argv) { DM dm; SNES snes; Vec u, r; AppCtx user; PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL, help);CHKERRQ(ierr); ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); ierr = SNESCreate(PETSC_COMM_WORLD, &snes);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &dm);CHKERRQ(ierr); ierr = SNESSetDM(snes, dm);CHKERRQ(ierr); ierr = PetscMalloc(3 * sizeof(void (*)()), &user.exactFuncs);CHKERRQ(ierr); ierr = SetupDiscretization(dm, &user);CHKERRQ(ierr); ierr = DMCreateGlobalVector(dm, &u);CHKERRQ(ierr); ierr = PetscObjectSetName((PetscObject) u, "solution");CHKERRQ(ierr); ierr = VecDuplicate(u, &r);CHKERRQ(ierr); ierr = DMPlexSetSNESLocalFEM(dm,&user,&user,&user);CHKERRQ(ierr); ierr = SNESSetFromOptions(snes);CHKERRQ(ierr); ierr = DMProjectFunction(dm, user.exactFuncs, NULL, INSERT_ALL_VALUES, u);CHKERRQ(ierr); ierr = DMSNESCheckFromOptions(snes, u, user.exactFuncs, NULL);CHKERRQ(ierr); if (user.runType == RUN_FULL) { PetscErrorCode (*initialGuess[3])(PetscInt dim, const PetscReal x[], PetscInt Nf, PetscScalar u[], void *ctx); PetscReal error; initialGuess[0] = zero; initialGuess[1] = zero; initialGuess[2] = zero; ierr = DMProjectFunction(dm, initialGuess, NULL, INSERT_VALUES, u);CHKERRQ(ierr); ierr = VecViewFromOptions(u, NULL, "-initial_vec_view");CHKERRQ(ierr); ierr = DMComputeL2Diff(dm, user.exactFuncs, NULL, u, &error);CHKERRQ(ierr); if (error < 1.0e-11) {ierr = PetscPrintf(PETSC_COMM_WORLD, "Initial L_2 Error: < 1.0e-11\n");CHKERRQ(ierr);} else {ierr = PetscPrintf(PETSC_COMM_WORLD, "Initial L_2 Error: %g\n", error);CHKERRQ(ierr);} ierr = SNESSolve(snes, NULL, u);CHKERRQ(ierr); ierr = DMComputeL2Diff(dm, user.exactFuncs, NULL, u, &error);CHKERRQ(ierr); if (error < 1.0e-11) {ierr = PetscPrintf(PETSC_COMM_WORLD, "Final L_2 Error: < 1.0e-11\n");CHKERRQ(ierr);} else {ierr = PetscPrintf(PETSC_COMM_WORLD, "Final L_2 Error: %g\n", error);CHKERRQ(ierr);} } ierr = VecViewFromOptions(u, NULL, "-sol_vec_view");CHKERRQ(ierr); ierr = VecDestroy(&u);CHKERRQ(ierr); ierr = VecDestroy(&r);CHKERRQ(ierr); ierr = SNESDestroy(&snes);CHKERRQ(ierr); ierr = DMDestroy(&dm);CHKERRQ(ierr); ierr = PetscFree(user.exactFuncs);CHKERRQ(ierr); ierr = PetscFinalize(); return 0; }
int main(int argc, char **argv) { AppCtx user; /* user-defined work context */ PetscErrorCode ierr; ierr = PetscInitialize(&argc, &argv, NULL, help);if (ierr) return ierr; ierr = ProcessOptions(PETSC_COMM_WORLD, &user);CHKERRQ(ierr); ierr = CreateMesh(PETSC_COMM_WORLD, &user, &user.dm);CHKERRQ(ierr); if (user.testShape) {ierr = DMPlexCheckCellShape(user.dm, PETSC_TRUE);CHKERRQ(ierr);} ierr = DMDestroy(&user.dm);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }
Resource* MDLMeshImporter::Import( const String& pFilename, const String& /*pParams*/ ) { NWN::Model model( pFilename ); MDLReader modelReader; modelReader.Read( pFilename, model ); // Recursivly create all meshes. Mesh* pMesh = CreateMesh( model.mGeometry, NULL, model.mAnimations.size() > 0 || model.mSuperModelName != "null" ); pMesh->SetName(pFilename); return pMesh; }
Mesh* CreateChunkyCylinder(float radius, float height, int numSegments, const glm::mat4& transform) { std::vector<VertexPositionNormal> vertices; float top = 0.5f * height; float bottom = -0.5f * height; float angStep = 2 * 3.14159f / numSegments; float angle = 0; for (int i = 0; i < numSegments; i++) { float x1 = radius * std::cos(angle); float z1 = radius * std::sin(angle); float x2 = radius * std::cos(angle + angStep); float z2 = radius * std::sin(angle + angStep); // triangle at the base vertices.push_back(VertexPositionNormal(0, bottom, 0, 0, -1, 0)); vertices.push_back(VertexPositionNormal(x1, bottom, z1, 0, -1, 0)); vertices.push_back(VertexPositionNormal(x2, bottom, z2, 0, -1, 0)); // triangle at the top vertices.push_back(VertexPositionNormal(0, top, 0, 0, 1, 0)); vertices.push_back(VertexPositionNormal(x2, top, z2, 0, 1, 0)); vertices.push_back(VertexPositionNormal(x1, top, z1, 0, 1, 0)); // compute normal for triangles on the side glm::vec3 a(x1, top, z1); glm::vec3 b(x1, bottom, z1); glm::vec3 c(x2, bottom, z2); glm::vec3 u = b - a; glm::vec3 v = c - a; glm::vec3 n = glm::normalize(glm::cross(v, u)); vertices.push_back(VertexPositionNormal(x1, top, z1, n.x, n.y, n.z)); vertices.push_back(VertexPositionNormal(x2, bottom, z2, n.x, n.y, n.z)); vertices.push_back(VertexPositionNormal(x1, bottom, z1, n.x, n.y, n.z)); vertices.push_back(VertexPositionNormal(x1, top, z1, n.x, n.y, n.z)); vertices.push_back(VertexPositionNormal(x2, top, z2, n.x, n.y, n.z)); vertices.push_back(VertexPositionNormal(x2, bottom, z2, n.x, n.y, n.z)); angle += angStep; } // transform the vertices using the user-supplied transformation matrix TransformPositionsAndNormals(vertices, transform); return CreateMesh(GL_TRIANGLES, vertices); }
//----------------------------------------------------------------------------- // CreateDefaultObjects // Creates the default objects //----------------------------------------------------------------------------- void CRenderer::CreateDefaultObjects( void ) { // Texture m_nDefaultTexture = LoadTexture2D( "Assets/Textures/DefaultTexture.png" ); // Default mesh m_nDefaultMesh = CreateMesh(); // debug sphere m_nSphereMesh = LoadMesh( "Assets/meshes/sphere.mesh" ); // debug box m_nDebugBox = CreateDynamicBox(); ////////////////////////////////////////// // Load Shaders LoadShaders(); // a vertex shader for drawing lines VPosColor pLineVertices[] = { { RVector3( 0.0f, 0.0f, 0.0f ), RVector4( 1.0f, 1.0f, 1.0f, 1.0f ) }, { RVector3( 1.0f, 1.0f, 1.0f ), RVector4( 1.0f, 1.0f, 1.0f, 1.0f ) }, }; m_pLineBuffer = m_pDevice->CreateVertexBuffer( sizeof( pLineVertices ), pLineVertices ); // Set the defaults SetVertexShader( eVS3DPosNorTexStd ); SetPixelShader( ePS3DStd ); SetSamplerState( eSamplerLinear ); m_pDevice->SetPrimitiveType( GFX_PRIMITIVE_TRIANGLELIST ); static float Vtx[] = { -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, }; static uint16 Idx[] = { 0, 1, 2, 0, 2, 3, }; m_pFSRectVB = m_pDevice->CreateVertexBuffer( sizeof( Vtx ), Vtx ); m_pFSRectIB = m_pDevice->CreateIndexBuffer ( sizeof( Idx ), Idx ); }
ViewInfo* InitView() { ViewInfo* view = new ViewInfo(); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); view->basic_shader = CreateShaderProgram(SHADER_TEXTURED); view->texture_uniform = glGetUniformLocation(view->basic_shader, "view_texture"); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); view->boot_vert = boot_vert_def(); boot_vert verts[4]; verts[0].location.x = -0.90; verts[0].location.y = -0.90; verts[0].location.z = 0.0; verts[0].uv.x = 0.0; verts[0].uv.y = 1.0; verts[1].location.x = -0.90; verts[1].location.y = 0.90; verts[1].location.z = 0.0; verts[1].uv.x = 0.0; verts[1].uv.y = 0.0; verts[2].location.x = 0.90; verts[2].location.y = -0.90; verts[2].location.z = 0.0; verts[2].uv.x = 1.0; verts[2].uv.y = 1.0; verts[3].location.x = 0.90; verts[3].location.y = 0.90; verts[3].location.z = 0.0; verts[3].uv.x = 1.0; verts[3].uv.y = 0.0; view->test_mesh = CreateMesh(4, sizeof(boot_vert), verts); view->bMouseDown = false; view->web = CreateWebView("webkit"); view->test_texture = CreateTextureFromBMP("test.bmp"); return view; }