コード例 #1
0
ファイル: Source.cpp プロジェクト: onerain88/OGLDev
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;
}
コード例 #2
0
ファイル: Terrain.cpp プロジェクト: nian0601/Spaceshooter
	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();
	}
コード例 #3
0
void FFlatVertexBuffer::CreateFlatVBO()
{
    for (int h = sector_t::floor; h <= sector_t::ceiling; h++)
    {
        for(int i=0; i<numsectors; i++)
        {
            CreateVertices(h, &sectors[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 == &sectors[i])
            {
                ff->top.vindex = sectors[i].vboindex[ff->top.isceiling];
            }
            if (ff->bottom.model == &sectors[i])
            {
                ff->bottom.vindex = sectors[i].vboindex[ff->top.isceiling];
            }
        }
    }
}
コード例 #4
0
ファイル: Sprite.cpp プロジェクト: nian0601/Spaceshooter
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();
}
コード例 #5
0
ファイル: StarMesh.cpp プロジェクト: Andrusza/OpenUniverse
void StarMesh::InitShape()
{
	
	CreateVertices();
	CreateIndices();
	CreateNormals();
	CreateTextureCoords();
}
コード例 #6
0
ファイル: bone.cpp プロジェクト: duguruiyuan/CoreVRengine
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();
}
コード例 #7
0
	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;
	}
コード例 #8
0
ファイル: Sprite.cpp プロジェクト: nian0601/Spaceshooter
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();
}
コード例 #9
0
ファイル: arc.cpp プロジェクト: Noplace/Solar
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;
}
コード例 #10
0
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);
}
コード例 #11
0
ファイル: CPlantCollect.cpp プロジェクト: yingyuewuhen/D3D
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;
}
コード例 #12
0
ファイル: bone.cpp プロジェクト: duguruiyuan/CoreVRengine
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();
}
コード例 #13
0
ファイル: SkinnedMeshLoader.cpp プロジェクト: Mourtz/pomdog
//-----------------------------------------------------------------------
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);
}
コード例 #14
0
	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;
	}
コード例 #15
0
ファイル: YSSphere.cpp プロジェクト: yschutz/TestOpenGL
//=====================================================================================
YSSphere::YSSphere(double radius, int seg, double degrees, QObject *parent) : YSShape("Sphere", degrees, parent),
    mRadius(radius), mSeg(seg)
{
    // ctor
    CreateVertices();
}