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; } }
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(); }
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; } }
/*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; }