int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitWindowPosition(0, 0); glutInitWindowSize(400, 300); glutCreateWindow("Tutorial 05"); GLenum ret = glewInit(); if (ret != GLEW_OK) { fprintf(stderr, "Error : %s\n", glewGetErrorString(ret)); exit(1); } glClearColor(0.8f, 0.3f, 0.1f, 1.0f); InitializeGlutCallbacks(); CompileShader(); CreateVertices(); glutMainLoop(); return 0; }
Terrain::Terrain(const std::string& aHeightMapPath, const std::string& aTexturePath , const CU::Vector2<float>& aSize, float aHeight, const CU::Matrix44<float>& aOrientation) : myHeightMap(HeightMapFactory::Create(aHeightMapPath.c_str())) , mySize(aSize) , myHeight(aHeight) , myOrientation(aOrientation) , myVertexFormat(4) { myFileName = aTexturePath; myEffect = Engine::GetInstance()->GetEffectContainer()->GetEffect("Data/Resource/Shader/S_effect_skybox.fx"); D3D11_INPUT_ELEMENT_DESC vertexDesc[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 }, }; InitInputLayout(vertexDesc, ARRAYSIZE(vertexDesc), "Terrain::InputLayout"); InitVertexBuffer(sizeof(VertexPosNormUV), D3D11_USAGE_IMMUTABLE, 0); InitIndexBuffer(); InitSurface("DiffuseTexture", myFileName); InitBlendState("Terrain::BlendState"); ZeroMemory(myInitData, sizeof(myInitData)); CreateVertices(); }
void FFlatVertexBuffer::CreateFlatVBO() { for (int h = sector_t::floor; h <= sector_t::ceiling; h++) { for(int i=0; i<numsectors; i++) { CreateVertices(h, §ors[i], sectors[i].GetSecPlane(h), h == sector_t::floor); } } // We need to do a final check for Vavoom water and FF_FIX sectors. // No new vertices are needed here. The planes come from the actual sector for(int i=0; i<numsectors; i++) { for(unsigned j=0; j<sectors[i].e->XFloor.ffloors.Size(); j++) { F3DFloor *ff = sectors[i].e->XFloor.ffloors[j]; if (ff->top.model == §ors[i]) { ff->top.vindex = sectors[i].vboindex[ff->top.isceiling]; } if (ff->bottom.model == §ors[i]) { ff->bottom.vindex = sectors[i].vboindex[ff->top.isceiling]; } } } }
Prism::Sprite::Sprite(const std::string& aFileName, const CU::Vector2<float>& aSpriteSize , const CU::Vector2<float>& aHotSpot) : mySize(aSpriteSize) , myHotspot(aHotSpot) , myTexture(nullptr) , myShaderView(nullptr) { myFileName = aFileName; myEffect = Engine::GetInstance()->GetEffectContainer()->GetEffect("Data/Resource/Shader/S_effect_sprite.fx"); myEffect->AddListener(this); D3D11_INPUT_ELEMENT_DESC vertexDesc[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, }; InitInputLayout(vertexDesc, ARRAYSIZE(vertexDesc), "Sprite::InputLayout"); InitVertexBuffer(sizeof(VertexPosUV), D3D11_USAGE_IMMUTABLE, 0); InitIndexBuffer(); InitSurface("DiffuseTexture", myFileName); InitBlendState("Sprite::BlendState"); ZeroMemory(myInitData, sizeof(myInitData)); CreateVertices(); }
void StarMesh::InitShape() { CreateVertices(); CreateIndices(); CreateNormals(); CreateTextureCoords(); }
void Bone::Move(vec3 trans, vec3 rotate, vec3 scale) { point1=point2-point1*(dot((point2-point1),scale)); vec3 curDirection=point2-point1; vec3 newDirection=curDirection*dot(curDirection,rotate); point1=point2-newDirection; point1+=trans; point2+=trans; CreateVertices(); }
void SpriteComponent::InitializeComponent() { TextureManager::GetInstance()->LoadTexture(m_FilePath.GetAssetsPath(),m_SpriteName); m_Width = TextureManager::GetInstance()->GetTextureDimensions(m_SpriteName).x / m_WidthSegments; m_Heigth = TextureManager::GetInstance()->GetTextureDimensions(m_SpriteName).y / m_HeightSegments; CreateVertices(); CreateIndices(); m_SpriteInfo.spriteName = m_SpriteName; m_SpriteInfo.vertices = GetVertices(); m_SpriteInfo.uvCoords = GetUVCoords(); m_SpriteInfo.bIsHUD = m_bIsHudElement; }
Prism::Sprite::Sprite(ID3D11Texture2D* aTexture, const CU::Vector2<float>& aSpriteSize , const CU::Vector2<float>& aHotSpot) : mySize(aSpriteSize) , myHotspot(aHotSpot) , myTexture(nullptr) , myShaderView(nullptr) { myFileName = "Inited from ID3D11Texture"; myEffect = Engine::GetInstance()->GetEffectContainer()->GetEffect("Data/Resource/Shader/S_effect_sprite.fx"); myEffect->AddListener(this); D3D11_INPUT_ELEMENT_DESC vertexDesc[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, }; D3D11_TEXTURE2D_DESC desc; aTexture->GetDesc(&desc); desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; HRESULT hr = Engine::GetInstance()->GetDevice()->CreateTexture2D(&desc, NULL, &myTexture); if (FAILED(hr)) { DL_ASSERT("Failed to CreateTexture2D"); } Engine::GetInstance()->SetDebugName(myTexture, "Sprite::myTexture"); hr = Engine::GetInstance()->GetDevice()->CreateShaderResourceView(myTexture, NULL, &myShaderView); if (FAILED(hr)) { DL_ASSERT("Failed to CopyFromD3DTexture"); } Engine::GetInstance()->SetDebugName(myShaderView, "Sprite::myShaderView"); CopyFromD3DTexture(aTexture); InitInputLayout(vertexDesc, ARRAYSIZE(vertexDesc), "Sprite::InputLayout"); InitVertexBuffer(sizeof(VertexPosUV), D3D11_USAGE_IMMUTABLE, 0); InitSurface("DiffuseTexture", myShaderView); InitIndexBuffer(); InitBlendState("Sprite::BlendState"); ZeroMemory(myInitData, sizeof(myInitData)); CreateVertices(); }
int Arc::Construct() { Vertex* vertices = CreateVertices(); if (!vertices) return S_FALSE; //vb_id = pool.Allocate(vertex_count_); vertex_buffer_.description.bind_flags = D3D11_BIND_VERTEX_BUFFER; vertex_buffer_.description.usage = D3D11_USAGE_DEFAULT; vertex_buffer_.description.byte_width = sizeof( Vertex ) * vertex_count_; vertex_buffer_.description.cpu_access_flags = 0; //context_->DestroyBuffer(vertex_buffer_); //context_->CreateBuffer(vertex_buffer_,NULL); throw new std::exception(); int hr = context_->CopyToVertexBuffer(vertex_buffer_.internal_pointer,vertices,sizeof(Vertex),0,vertex_count_); //pool.CopyData(vb_id,vertices,vertex_count_); delete [] vertices; return hr; }
bool Direct3D9Video::Reset (bool fNewDevice_) { static bool fResetting = false; HRESULT hr = 0; if (!m_pd3d || fResetting) return false; if (m_pTexture) m_pTexture->Release(), m_pTexture = NULL; if (m_pScanlineTexture) m_pScanlineTexture->Release(), m_pScanlineTexture = NULL; if (m_pVertexBuffer) m_pVertexBuffer->Release(), m_pVertexBuffer = NULL; m_d3dpp.BackBufferWidth = m_rTarget.right - m_rTarget.left; m_d3dpp.BackBufferHeight = m_rTarget.bottom - m_rTarget.top; if (m_pd3dDevice && !fNewDevice_) { fResetting = true; if (FAILED(hr = m_pd3dDevice->Reset(&m_d3dpp))) TRACE("Reset() returned %#08lx\n", hr); fResetting = false; } else { if (m_pd3dDevice) m_pd3dDevice->Release(), m_pd3dDevice = NULL; hr = CreateDevice(); } if (m_pd3dDevice) { m_pd3dDevice->SetDialogBoxMode(TRUE); m_pd3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD); m_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); m_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); CreateSurfaces(); CreateVertices(); } Video::SetDirty(); return SUCCEEDED(hr); }
bool CPlantCollect::Create(float fMinHeight, float fMaxHeight, float fdensity) { m_fMinHeight = fMinHeight; m_fMaxHeight = fMaxHeight; m_fDensity = fdensity; if (!LoadContent()) { Release(); return false; } //创建植被结点 CreatePlantNode(); //创建顶点缓冲 CreateVertices(); return true; }
Bone::Bone(vec3 p1, vec3 p2, Bone* parent) { translate=vec3(0.0f,0.0f,0.0f); rotate=vec3(0.0f,0.0f,0.0f); scale=vec3(0.0f,0.0f,0.0f); point1=p1; if(parent==NULL) { point2=p2; } else{ point2=parent->point1; } //this->parent=parent; pointsVBO=0; colorsVBO=0; VAO=0; CreateVertices(); }
//----------------------------------------------------------------------- SkinnedMesh CreateSkinnedMesh( GraphicsDevice & graphicsDevice, std::vector<Matrix3x2> const& bindPosesInGlobal, SkeletonDesc const& skeletonDesc, TexturePacker::TextureAtlas const& textureAtlas, Vector2 const& textureSize, std::string const& skinName) { POMDOG_ASSERT(!skeletonDesc.Bones.empty()); POMDOG_ASSERT(!skeletonDesc.Skins.empty()); auto iter = std::find_if(std::begin(skeletonDesc.Skins), std::end(skeletonDesc.Skins), [&skinName](SkinDesc const& desc){ return desc.Name == skinName; }); POMDOG_ASSERT(iter != std::end(skeletonDesc.Skins)); if (iter == std::end(skeletonDesc.Skins)) { iter = std::begin(skeletonDesc.Skins); } POMDOG_ASSERT(iter != std::end(skeletonDesc.Skins)); ///@todo Notimplemented // if (iter == std::end(skeletonDesc.Skins)) { // throw NotFound; // } auto meshData = CreateVertices(skeletonDesc.Slots, *iter, textureAtlas, textureSize, bindPosesInGlobal); SkinnedMesh skinnedMesh; skinnedMesh.VertexBuffer = std::make_shared<VertexBuffer>(graphicsDevice, meshData.Vertices.data(), meshData.Vertices.size(), sizeof(SkinnedVertex), BufferUsage::Immutable); skinnedMesh.IndexBuffer = std::make_shared<IndexBuffer>( graphicsDevice, IndexElementSize::SixteenBits, meshData.Indices.data(), meshData.Indices.size(), BufferUsage::Immutable); skinnedMesh.MeshParts = std::move(meshData.MeshParts); return std::move(skinnedMesh); }
void SpriteComponent::SetTexture( const tstring& filepath, const tstring& spriteName, bool bIsHUDElement /*= false*/, int32 widthSegments /*= 1*/, int32 heightSegments /*= 1*/ ) { m_Width = 0; m_WidthSegments = widthSegments; m_CurrentWidthSegment = 0; m_Heigth = 0; m_HeightSegments = heightSegments; m_CurrentHeightSegment = 0; m_FilePath = filepath; m_SpriteName = spriteName; m_bIsHudElement = bIsHUDElement; TextureManager::GetInstance()->LoadTexture(m_FilePath.GetAssetsPath(),m_SpriteName); m_Width = TextureManager::GetInstance()->GetTextureDimensions(m_SpriteName).x / m_WidthSegments; m_Heigth = TextureManager::GetInstance()->GetTextureDimensions(m_SpriteName).y / m_HeightSegments; CreateVertices(); CreateIndices(); m_SpriteInfo.spriteName = m_SpriteName; m_SpriteInfo.vertices = GetVertices(); m_SpriteInfo.uvCoords = GetUVCoords(); m_SpriteInfo.bIsHUD = m_bIsHudElement; }
//===================================================================================== YSSphere::YSSphere(double radius, int seg, double degrees, QObject *parent) : YSShape("Sphere", degrees, parent), mRadius(radius), mSeg(seg) { // ctor CreateVertices(); }