Exemple #1
0
int main()
{
	osg::ref_ptr<osg::Group> root = new osg::Group();
	
	osg::ref_ptr<osg::Geode> cube = makeHead();
	root->addChild(cube.get());
	
	c2 = new osg::PositionAttitudeTransform();

	root->addChild(c2);
	c2->addChild(cube.get());
	osg::Vec3 c2pos = osg::Vec3(100,0,100);
	c2->setPosition(c2pos);

	root->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);

	if(root.valid())
	{	
		osgViewer::Viewer viewer;
		viewer.setSceneData(root);
		viewer.setCameraManipulator(new osgGA::TrackballManipulator());
		viewer.realize();
	
		while(!viewer.done())
		{
			viewer.frame();
			update(.005);
		}
	}
	else
	{
		std::cout << "Invalid Graph!" << std::endl;
	}
}
Exemple #2
0
int main(int argc, const char * argv[]) {
    // insert code here...
    //std::cout << "Hello, World!\n";
    
    char *content = "This is content.";
    
    char *buf = (char*)malloc(16 + strlen(content));
    char *body = buf + 16;
    
    struct head h = makeHead(1, 2, 3, 0, 11, 1);
    
    memcpy(buf, &h, sizeof(h));
    
    memcpy(body, content, strlen(content));
    
    
    //parse
    char *buf2 = (char*)malloc(16 + strlen(content));
    char *body2 = buf2 + 16;
    memcpy(buf2, buf, 16 + strlen(content));
    struct head *h2 = (struct head*)buf2;
    
    printf("%lu\n",sizeof(struct head));
    printf("%s\n",body2);
    
    return 0;
}
	void GrassLamp::getModel(){

		glPushMatrix();
		glScalef(1.0f,0.7f,1.0f);
			makePole();
			makeHead();

		glPopMatrix();
	}
Exemple #4
0
int main()
{
	osg::ref_ptr<osg::Group> root = new osg::Group();
	
	osg::ref_ptr<osg::Geode> cube = makeHead();
	root->addChild(cube.get());
	
	osg::PositionAttitudeTransform* c2 = new osg::PositionAttitudeTransform();

	root->addChild(c2);
	c2->addChild(cube.get());
	osg::Vec3 c2pos = osg::Vec3(20,0,0);
	c2->setPosition(c2pos);

	osg::Texture2D* texture = new osg::Texture2D();
	texture->setDataVariance(osg::Object::DYNAMIC);

	osg::Image* img = osgDB::readImageFile("assets/pumice.jpg");
	if(!img)
	{
		std::cout << "No such image file." << std::endl;
		return -1;
	}

	texture->setImage(img);

	osg::StateSet* texState = new osg::StateSet();
	texState->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);
	cube->setStateSet(texState);

	root->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);

	if(root.valid())
	{	
		osgViewer::Viewer viewer;
		viewer.setSceneData(root);
		viewer.setCameraManipulator(new osgGA::TrackballManipulator());
		viewer.realize();
	
		while(!viewer.done())
		{
			viewer.frame();
		}
	}
	else
	{
		std::cout << "Invalid Graph!" << std::endl;
	}
}
Exemple #5
0
/*int wav::getHead(FILE *fp )
{
	long file_pos = ftell(fp);
	//Read RIFF_HEADER
	fread(&pcmHEADER, sizeof(HEADER), 1, fp);
	if(	memcmp(pcmHEADER.fccID, "RIFF", 4) != 0 ||
		memcmp(pcmHEADER.fccType, "WAVE", 4) != 0 )
	{
		return(WAV_FLAG_HEADER_ERROR);
	}

	file_pos = ftell(fp);
	//Read pcmFMT
	fread(&pcmFMT, sizeof(FMT), 1, fp);
	if(	memcmp(pcmFMT.fccID, "fmt ", 4) !=0 
		//|| pcmFMT.dwSize != 16
		//|| pcmFMT.wFormatTag != 0x1 
		//|| pcmFMT.wChannels != 0x1 
		//|| pcmFMT.dwSamplesPerSec != 16000 
		//|| pcmFMT.uiBitsPerSample != 16
		)
	{
		return(WAV_FLAG_FMT_ERROR);
	}

	file_pos = ftell(fp);
	if(pcmFMT.wFormatTag == WAVE_FORMAT_MU_LAW
		|| pcmFMT.wFormatTag == WAVE_FORMAT_A_LAW)
	{
	//read FACTdata
		file_pos+=2;
		fseek(fp, file_pos, SEEK_SET);
		fread(&pcmFACT, sizeof(FACT), 1, fp);
		if( memcmp(pcmFACT.szFactID, "fact", 4) != 0 )
		{	
			return(WAV_FLAG_FACT_ERROR);
		}
		//has_fact_block =1;
		fread(&fact_block_buffer,pcmFACT.dwFactSize, 1, fp);
	}
	file_pos = ftell(fp);
	//read PCMdata
	fread(&pcmDATA, sizeof(DATA), 1, fp);
	if (memcmp(pcmDATA.fccID, "data", 4) != 0)
	{
		return(WAV_FLAG_DATA_ERROR);
	}
	return 0;
}

int wav::getHead(const char * in ,unsigned short &wFormatTag,unsigned long &dwSamplesPerSec,
		unsigned short &uiBitsPerSample,unsigned short &wChannels, 
		unsigned short &wBlockAlign)
{
	int nRet = 0 ;
	FILE *fp = fopen(in,"rb");
	if(fp==NULL)
	{
		return WAV_IN_FILE_ERROR;
	}
	nRet = getHead(fp);
	if(nRet != 0)
	{
		fclose(fp);
		return nRet;
	}
	dwSamplesPerSec	=	pcmFMT.dwSamplesPerSec;
	uiBitsPerSample	=	pcmFMT.uiBitsPerSample;
	wChannels		=	pcmFMT.wChannels;
	wFormatTag		=	pcmFMT.wFormatTag;
	wBlockAlign		=	pcmFMT.wBlockAlign; 
	fclose(fp);
	return 0;
}
*/
int wav::pcm2wav(const char * in , const char * out)
{
	unsigned   short   m_pcmData;                               //读入.pcm和写入文件.wav数据变量 
	FILE   *fp,*fpCpy; 
	int nRet = 0;
	if((fp=fopen( in , "rb"))   ==   NULL)	 //读取文件 
	{ 
		return PCM_IN_FILE_ERROR;
	}   

	if((fpCpy=fopen( out , "wb"))   ==   NULL)	 //为转换建立一个新文件 
	{ 
		fclose(fp);
		return WAV_OUT_FILE_ERROR;
	}
	
//以下是创建wav头的HEADER;但.dwsize未定,因为不知道Data的长度。 
//	strcpy(pcmHEADER.fccID, "RIFF");                   
//	strcpy(pcmHEADER.fccType, "WAVE"); 
//以上是创建wav头的HEADER; 

//以下是创建wav头的FMT; 
//	pcmFMT.dwSamplesPerSec=16000; 
//	pcmFMT.dwAvgBytesPerSec=pcmFMT.dwSamplesPerSec*sizeof(m_pcmData); 
//	pcmFMT.uiBitsPerSample=16; 

//	strcpy(pcmFMT.fccID, "fmt "); 
//	pcmFMT.dwSize=16; 
//	pcmFMT.wBlockAlign=2; 
//	pcmFMT.wChannels=1; 
//	pcmFMT.wFormatTag=WAVE_FORMAT_PCM; 
//以上是创建wav头的FMT;  

//	strcpy(pcmDATA.fccID, "data"); 
//以上是创建wav头的DATA; 

//	pcmDATA.dwSize=0;	 //给pcmDATA.dwsize   0以便于下面给它赋值 

	nRet = makeHead(WAVE_FORMAT_PCM,16000,16,1,2);
	if(nRet!=0)
	{
		fclose(fp);
		fclose(fpCpy);
		return nRet;
	}
	fseek(fpCpy,sizeof(HEADER),1);	 //跳过HEADER的长度,以便下面继续写入wav文件的数据; 
	fseek(fpCpy,sizeof(FMT),1);	 //跳过FMT,因为FMT已经写入 
	fseek(fpCpy,sizeof(DATA),1);	 //跳过DATA的长度,以便以后再写入wav头的DATA; 
	pcmDATA.dwSize=0;
	while(!feof(fp))	 //在.pcm文件结束前将他的数据转化并赋给.wav; 
	{ 
		fread(&m_pcmData,sizeof(unsigned   short),1,fp);	 //从.pcm中读入数据 
		pcmDATA.dwSize+=2;	 //计算数据的长度;每读入一个数据,长度就加一; 
		fwrite(&m_pcmData,sizeof(unsigned   short),1,fpCpy);	//将数据写入.wav文件; 
	} 

	pcmHEADER.dwSize=44+pcmDATA.dwSize;	   //根据pcmDATA.dwsize得出pcmHEADER.dwsize的值 
	rewind(fpCpy);	 //将fpCpy变为.wav的头,以便于写入HEADER和DATA; 
	fwrite(&pcmHEADER,sizeof(HEADER),1,fpCpy);	 //写入HEADER 
	fwrite(&pcmFMT,sizeof(FMT),1,fpCpy);	 //将FMT写入.wav文件; 
	fwrite(&pcmDATA,sizeof(DATA),1,fpCpy);	   //写入DATA; 
	fclose(fp);	 //关闭文件 
	fclose(fpCpy);	   //关闭文件
	return WAV_SUCCESS;
}