الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اضافه صورره png علي opengl

بدأه karimcplus في 15 أبريل 2011 · 3 رد · 1,188 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

كنت عايز اعرف ازاي بعمل load الي png في opengl

عشان دورت كتير ومش لاقي حاجه واضحه فيا ريت الرد كمان يبقي بمثال يعني الي يعملها يرفع الكود بتاعها ولو في اي library يا ريت يقول عليها

والسلام عليكم ورحمة الله وبركاته

تم تعديل هذه المشاركة بواسطة karimcplus في 15 أبريل 2011 في 01:02

#2

ال opengl يرسم bitmap السؤال يجب ان يكون كيف تحصل على ال bitmap لملف png

1
#3

جميل بس بصيغه تانيه انا يهمني الكود بتاعها مش هتفرق انا اهم حاجه احط png

#4

الأسهل أن تتسخدم مكتبة جاهزة لهذا الغرض :

http://openil.sourceforge.net/

هذا موضوع يحتوي على مثال لتحميل صورة ( لا أذكر نوعها ) ، لكن يمكنك تحميل أي صورة بنفس الطريقة :

http://www.arabteam2...howtopic=130647

وتحديداً هذا المثال :

http://www.arabteam2...attach_id=46971

تستطيع أن تستخلص منه المطلوب ( المثال يحوي أموراً قد لا تحتاجها مثل إزالة لون معين من الصورة ) ..

void CreateTexture(char *imageName )
{
	 // Load BMP (RGB) Image 
	ilInit();
	iluInit();
	ilutRenderer(ILUT_WIN32);
	ilGenImages(1, ℑ);   
	ilBindImage(image);  
	ilLoadImage(imageName); 
	ilConvertImage(IL_RGBA  , IL_UNSIGNED_BYTE);
	int size =ilGetInteger(IL_IMAGE_SIZE_OF_DATA);
	unsigned char * data = new unsigned char [size];
	unsigned char * newData= new  unsigned char[size] ; 
	data= ilGetData(); // get the Original image Data ;

	// Copy All data From RGB image to RGBA image
		 for(int i=0;i<size ;i+=4 ) 
		 {
			 // Copy R byte && G byte && B byte 
			 newData = data;
			 newData[i+1]=data[i+1];
			 newData[i+2]= data[i+2];

			 // Now if(image->data (rgb) == Color Key) then set Alpha channel to Zero
			 if( data == r && 
				 data[i+1] == g && 
				 data[i+2] == b )
				 newData[i+3] = 0 ;// alpha channel 
			 else
				newData[i+3] = 255 ;
		 }
		 // ok .. now we have new Data ( with Alpha Channel ) 

	glGenTextures(1, &id);
	glBindTexture(GL_TEXTURE_2D,id);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
	glTexImage2D(GL_TEXTURE_2D,0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT),0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE,newData); 


	ilDeleteImages(1,ℑ);
}

تستدعي الدالة بهذا الشكل :

CreateTexture("ColorKey.bmp");

اكتب اسم الصورة الذي تريد ، ولا تنسى تثبيت المكتبة OpenIL طبعاً .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…