Ahoj. Zkouším se učit a programovat v DirectX 11 a rád bych věděl v čem debbugnout hlsl soubor. Microsoft buď podporuje Windows 8 pro to nebo je potřeba si připlatit za placenou verzi Visual Studia. Taky mám ve svém renderovacím programu chybu, kdy vytvořím 2D texture zdroj pro grafickou kartu, ale hodnota neodpovídá výslednému zobrazení. Skoro to vypadá že zdroj má jinou velikost než data, která do toho zdroje nahrávám. Takže to vypadá jako že se data překrývají. Vše jsem několikrát zkontroloval, ale nemůžu najít chybu. Taky jak jsem řekl nemůžu to debbugnout. Pokud bych někomu kód posílal, tak prosím o diskrétnost.
Příspěvky odeslané z IP adresy 89.24.203.–
Ahoj, chtěl bych navrhnout a vytvořit nějaké optimální řešení pool systemu v C++, je to pro 3D engine. Základní požadavky by byly, že objekty různých tříd by měly mít nějaké společné metody jako initializace a update a podobně, které by se volaly postupně pro všechny prvky. Takže tyto objekty by dědily z nějaké základní třídy. Dále by tam měla být možnost volat methody tříd , které jsou přidružené pouze pro nějakou world cell, protože mě nepřipadá moc optimální počítat fyziku pro celé world space. Mělo by to být engine, s větším počtem objektů ve world space.
Spokojím se i s radami jak to udělat optimálně, než s nějakým kompletním řešením.
Ahoj metoda getPixel vrací 2, což je InvalidParametr. Nevíte někdo, co s tím?
BYTE number;
Gdiplus::Color color;
Gdiplus::Bitmap bitmap(L"C:/Users/VereWolf/Desktop/World_Space_Gen/WorldSpaceGenV2/World_Space_Gen/Debug/gen.jpg");
for (INT i = 0; i < CELLS; i++)
{
for (INT j = 0; j < CELLS; j++)
{
bitmap.GetPixel(1,1,&color);
number = color.GetB();
pixels.at(i*CELLSCALE).at(j*CELLSCALE).pixelType = color.GetB();
}
}
Zkouším něco v konzoli, ale našel jsem jenom tuhle tu knihovnu, ale při kompilaci mi to háže chybu.
Dobrý den, já jsem členem Epoch Game, která je složena z dobrovolníků a která vyvíjejí free to play PC hru Lays of Althas: Sundered Order(LoA:SO). V současnosti hledáme nové dobrovolníky a přispěvatele.
Před tímto projektem jsme vyvíjeli Middle-Earth Roleplaying Project (MERP) jako totální konverzi Skyrimu. Ale bohužel jsme v červenci 2012 dostali C&D dopis od Warner Bross a pod tímto tlakem jsme museli vývoj ukončit. Věříme, že jsme schopni zúročit naší zkušenost s MERP v našem novém projektu.
V současnosti naši novou hru vyvíjíme na CryEngine 3 a hledáme koncept designéry, programátory v C++, skriptéry v LUA, 2D grafiky a 3D modeláře. Ale mějte na paměti, že jsme dobrovolníci a proto neočekávejte, že by jste dostávali plat nebo pracovali na plný úvazek. Potřebujeme vývojáře, kteří jsou ochotni obětovat spoustu času a úsilí.
Uchazeči, kteří nemají tolik času, aby se mohli připojit k týmu, mohou být přijati jako přispěvatelé na tak dlouho jak budou splňovat naše standarty kvality.
Níže jsou odkazy na Moddb stránku, stránku pro uchazeče a fórum pro přispěvatele.
http://www.moddb.com/games/the-lays-of-althas-sundered-order
http://www.epochgames.co.uk/forum/viewforum.php?f=525
http://www.epochgames.co.uk/forum/viewforum.php?f=585
Děkuju za váš čas,
VereWolf - Epocha Game Coder
struct CPixel
{
CPixel ()
{
pixelHeight = new UNSHORT;
pixelType = new TYPETERRAIN;
index = new UNSHORT;
*pixelHeight = 0;
*pixelType = gtt_Empty;
*index = 0;
};
~CPixel()
{
delete pixelHeight;
delete pixelType;
delete index;
}
CPixel (CPixel *right)
{
pixelHeight = new UNSHORT;
pixelType = new TYPETERRAIN;
index = new UNSHORT;
*pixelHeight = *right->pixelHeight;
*pixelType = *right->pixelType;
*index = *right->index;
};
UNSHORT *pixelHeight;
TYPETERRAIN *pixelType;
UNSHORT *index;
};
*height = CELLSCALE*CELLS;
*width = CELLSCALE*CELLS;
pixels.resize(*height);
for (UNSHORT i = 0; i < *height; i++) {
pixels.at(i).resize(*width);
Spadne mi to i když napíšu:
cout << pixels.size() << endl;
cout << pixels.at(0).size() << endl;
std::rotate(pixels.at(0).begin(), pixels.at(0).begin() + 1, pixels.at(0).end());
a obě dimenze mají velikost 512. Spadne mi to vždycky, když k pixels.at(0).begin() přičtu jakékoliv číslo.
Akorát úplně nechápu zápis
for(auto& v:vec)
Předpokládám, že všechny prvky vectoru vec postupně uloží do pomocného vectoru v a na nich provede funkci rotate.
Za druhé já tvořím fraktálový generátor map, který funguje velmi dobře. Ale plánuju, že bych ho použil ve skutečném grafickém enginu a momentálně planuju, že když se hráč posune, tak se mapa taky posune a nová část posunuté mapy se dogeneruje. A proto potřebuju v každém snímku řešit jenom část smyčky. Proto souřadnici x potřebuju zadávat ručně bez smyčky.
Ahoj, rád bych se zeptal, jak nejrychleji posunout všechny hodnoty ve vectoru. Př. Mám vector o velikosti 10 a všechny hodnoty potřebuji posunout o dvě doleva. Tak aby hodnota s klíčem č. 2 měla klíč č. 0, aby hodnota s klíčem č. 3 měla klíč č. 1 a hodnoty s klíčem č. 8,9 měly hodnotu 0. Pracuji na programu, který by měl umět streamovat velký svět do menšího.
Ahoj, mám program ve verzi v 32 bit a 64 bit a k tomu zdrojové kódy k jednomu .dll souboru toho programu. Bohužel potřebuji využít maximálně paměti RAM a proto to potřebuji zkompilovat do 64 bit. Visual Studio 2010 Express neumožňuje kompilování do 64 bit, ale údajně Microsoft SDK obsahuje 64 bit kompilátor. Takže jsem si ho nainstaloval. Ale problém je, že když ho mám nainstalovaný a v Configuration Manager v properties solution nastavím x64, tak mi zmizí celá nabídka v properties dokud vše zase nevrátím.
Ahoj potřeboval bych nějakou knihovnu, která pod win32 console application by byla schopná pracovat s jpeg formátem nebo s jiným, který se dá běžně upravovat v nějakém běžném grafickém editoru. Potřebuju načíst data a pak získat hodnoty z jednotlivých pixelů. Mohl bych použít raw, ale s ním některý editory moc nepracujou. Díky.
Ahoj potřeboval bych vědět jak nejjednodušeji rozdělit datový typ int po 8bit a ty pak přetypovat na char, abych je mohl uložit do souboru a naopak. Jak několik typů char, které jsem načetl ze souboru, spojit do jednoho int. Zde je můj příklad. Nebo je úplně jednoduší způsob?
unshort value;
unshort firstInt;
unshort secondaryInt;
cin >> value;
firstInt = value;
secondaryInt = value;
firstInt <<= 8;
firstInt >>= 8;
secondaryInt >>= 8;
cout << (char)firstInt << " " << (char)secondaryInt << endl;
value = firstInt + 256 * secondaryInt;
char firstChar;
char secondaryChar;
cin >> firstChar;
cout << endl;
cin >> secondaryChar;
cout << endl;
value = (unshort)secondaryChar;
value <<= 8;
value = value + (unshort)firstChar;
firstInt = value;
secondaryInt = value;
firstInt <<= 8;
firstInt >>= 8;
secondaryInt >>= 8;
cout << (char)firstInt << " " << (char)secondaryInt << endl;
value = firstInt + 256 * secondaryInt;
cout << value << endl;
Ahoj, může to být takhle? Nebo je nějaký jednoduší způsob?
/* Je to jenom priklad, napadlo me to a myslim, ze se mi to muze hodit*/
unshort value;
unshort firstInt;
unshort secondaryInt;
cin >> value;
firstInt = value;
secondaryInt = value;
firstInt <<= 8;
firstInt >>= 8;
secondaryInt >>= 8;
cout << (char)firstInt << " " << (char)secondaryInt << endl;
value = firstInt + 256 * secondaryInt;
char firstChar;
char secondaryChar;
cin >> firstChar;
cout << endl;
cin >> secondaryChar;
cout << endl;
value = (unshort)secondaryChar;
value <<= 8;
value = value + (unshort)firstChar;
firstInt = value;
secondaryInt = value;
firstInt <<= 8;
firstInt >>= 8;
secondaryInt >>= 8;
cout << (char)firstInt << " " << (char)secondaryInt << endl;
value = firstInt + 256 * secondaryInt;
cout << value << endl;
trochu jsem to zkrášlil a hned to funguje. :-D
#pragma once
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
typedef unsigned short int unshort;
typedef unsigned long int unlong;
class Image
{
public:
Image ();
void CreatePoints (unshort x, unshort y);
~Image ();
bool LoadFile (string nameFile);
bool SaveFile (string nameFile);
unshort GetValueFromThisPoint (unshort itsPoint) const {return pPoint[itsPoint] + itsPoint;}
void ConstructPoint ();
void SetValueOfThisPoint (unshort itsPoint, unshort itsValue) {pPoint[itsPoint] = itsValue;}
void SetPosition(unshort x, unshort y);
private:
unshort *pPoint;
unshort *pHeight, *pWidth;
};
class PlanetaryGeneration
{
public:
PlanetaryGeneration ();
PlanetaryGeneration (unshort x, unshort y);
~PlanetaryGeneration ();
bool SaveFiles ();
bool LoadFiles ();
string GetName(short itsX, short itsY);
void SetCoordinate (short itsX, short itsY);
void SetName ();
private:
Image *pImage;
short *pX;
short *pY;
string *pName;
};
PlanetaryGeneration::PlanetaryGeneration ()
{
pX = new short;
pY = new short;
pName = new string;
*pX = 0;
*pY = 0;
*pName = "Earth";
pImage = new Image[9];
for (int i = 0; i < 9; i++)
{
}
}
PlanetaryGeneration::PlanetaryGeneration (unshort x, unshort y)
{
pX = new short;
pY = new short;
pName = new string;
*pX = 0;
*pY = 0;
*pName = "Earth";
pImage = new Image[9];
for (int i = 0; i < 9; ++i)
{
pImage[i].CreatePoints(x,y);
}
}
PlanetaryGeneration::~PlanetaryGeneration ()
{
delete [] pImage;
delete pX;
delete pY;
delete pName;
}
bool PlanetaryGeneration::SaveFiles ()
{
int k = 0;
string itsName;
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
itsName = GetName(i,j);
if (itsName != "error")
{
if (pImage[k].SaveFile(itsName))
{
}
else
{
return false;
}
}
++k;
}
}
return true;
}
bool PlanetaryGeneration::LoadFiles ()
{
int k = 0;
string itsName;
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
itsName = GetName(i,j);
if (itsName != "error")
{
if (pImage[k].LoadFile(itsName))
{
}
else
{
return false;
}
}
++k;
}
}
return true;
}
string PlanetaryGeneration::GetName(short itsX, short itsY)
{
if (itsX > 1 || itsX < -1 || itsY > 1 || itsY < -1)
{
cout << " Input method GetName() must be in range -1 to 1!" << endl;
}
else
{
short resultX = *pX + itsX;
short resultY = *pY + itsY;
stringstream streamX;
stringstream streamY;
streamX << resultX;
streamY << resultY;
if (resultX < 0 || resultY < 0)
{}
else
{
string wholeName = *pName + streamX.str() + "_" + streamY.str() + ".raw";
return wholeName;
}
}
return "error";
}
void PlanetaryGeneration::SetCoordinate (short itsX, short itsY)
{
*pX = itsX;
*pY = itsY;
}
void PlanetaryGeneration::SetName ()
{
cout << "Write name of file." << endl;
cin >> *pName;
//cout << endl << *pName << endl;
}
//class Planet;
Image::Image ()
{
pHeight = new unshort;
pWidth = new unshort;
*pHeight = 0;
*pWidth = 0;
pPoint = 0;
}
void Image::CreatePoints (unshort x, unshort y)
{
if (x >= 256)
{
if (x <= 4096)
{
*pHeight = x;
}
else
{
*pHeight = 4096;
}
}
else
{
*pHeight = 256;
}
if (y >= 256)
{
if (y <= 4096)
{
*pWidth = y;
}
else
{
*pWidth = 4096;
}
}
else
{
*pWidth = 256;
}
pPoint = new unshort[*pHeight * *pWidth];
ConstructPoint ();
}
Image::~Image ()
{
delete pHeight;
delete pWidth;
delete [] pPoint;
}
bool Image::LoadFile (string nameFile)
{
cout << endl <<"Begin Load File " << "\"" << nameFile << "\"" << "." << endl;
unlong la = 0;
unlong lb = 0;;
unlong numberPoint;
unshort number;
lb = 0;
ifstream inImageFile(nameFile,ios::binary);
if(!inImageFile)
{
cout << endl <<"Unable to open." << endl;
return false;
}
for (unshort i = 0; i < *pHeight; i++)
{
for (unshort j = 0; j < *pWidth; j++)
{
numberPoint = *pHeight*j+ *pWidth;
inImageFile.read((char*) &number,sizeof number);
pPoint[numberPoint] = number;
la = 100*i/ *pHeight;
if (la != lb)
{
cout << "Load File: "<< la << " %"<< " " << number << endl;
lb = la;
}
}
}
inImageFile.close();
cout << endl << "Complete Load File: "<< 100 << " %"<< endl;
return true;
}
bool Image::SaveFile (string nameFile)
{
cout << endl <<"Begin Save File " << "\"" << nameFile << "\"" << "." << endl;
unlong la = 0;
unlong lb = 0;
unlong numberPoint;
unshort number;
ofstream outImageFile(nameFile,ios::binary);
if(!outImageFile)
{
cout << endl <<"Unable to open." << endl;
return false;
}
for (unshort i = 0; i < *pHeight; i++)
{
for (unshort j = 0; j < *pWidth; j++)
{
numberPoint = *pHeight*j+ *pWidth;
number = pPoint[numberPoint];
outImageFile.write((char*) &number,sizeof number);
la = 100*i/ *pHeight;
if (la != lb)
{
cout << "Save File: "<< la << " %"<< endl;
lb = la;
}
}
}
outImageFile.close();
cout << endl << "Complete Save File: "<< 100 << " %"<< endl;
return true;
}
void Image::ConstructPoint ()
{
unlong la = 0;
unlong lb = 0;
unlong numberPoint;
cout << "Create new image." << endl << endl;
for (unshort i = 0; i < *pHeight; i++)
{
for (unshort j = 0; j < *pWidth; j++)
{
numberPoint = *pHeight*j+ *pWidth;
pPoint[numberPoint] = i;
la = 100*i/ *pHeight;
if (la != lb)
{
cout << "Create: "<< la << " %"<< " " << pPoint[numberPoint] <<endl;
lb = la;
}
}
}
cout << "Complete: "<< 100 << " %"<< endl;
}
Ahoj, program spadne, když se volá destructor ~Image () , konkrétně řádek "delete [] pPoint;"
#pragma once
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Image
{
public:
Image ();
void CreatePoints (unsigned short int x, unsigned short int y);
~Image ();
bool LoadFile (string nameFile);
bool SaveFile (string nameFile);
unsigned short int GetValueFromThisPoint (unsigned short int itsPoint) const {return pPoint[itsPoint] + itsPoint;}
void ConstructPoint ();
void SetValueOfThisPoint (unsigned short int itsPoint, unsigned short int itsValue) {pPoint[itsPoint] = itsValue;}
void SetPosition(unsigned short int x, unsigned short int y);
private:
unsigned short int *pPoint;
unsigned short int *pHeight, *pWidth;
};
class PlanetaryGeneration
{
public:
PlanetaryGeneration ();
PlanetaryGeneration (unsigned short int x, unsigned short int y);
~PlanetaryGeneration ();
bool SaveFiles ();
bool LoadFiles ();
string GetName(signed short int itsX, signed short int itsY);
void SetCoordinate (signed short int itsX, signed short int itsY);
void SetName ();
private:
Image *pImage;
signed short int *pX;
signed short int *pY;
string *pName;
};
PlanetaryGeneration::PlanetaryGeneration ()
{
pX = new signed short int;
pY = new signed short int;
pName = new string;
*pX = 0;
*pY = 0;
*pName = "Earth";
pImage = new Image[9];
for (int i = 0; i < 9; i++)
{
}
}
PlanetaryGeneration::PlanetaryGeneration (unsigned short int x, unsigned short int y)
{
pX = new signed short int;
pY = new signed short int;
pName = new string;
*pX = 0;
*pY = 0;
*pName = "Earth";
pImage = new Image[9];
for (int i = 0; i < 9; ++i)
{
pImage[i].CreatePoints(x,y);
}
}
PlanetaryGeneration::~PlanetaryGeneration ()
{
delete [] pImage;
delete pX;
delete pY;
delete pName;
}
bool PlanetaryGeneration::SaveFiles ()
{
int k = 0;
string itsName;
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
itsName = GetName(i,j);
if (itsName != "error")
{
if (pImage[k].SaveFile(itsName))
{
}
else
{
return false;
}
}
++k;
}
}
return true;
}
bool PlanetaryGeneration::LoadFiles ()
{
int k = 0;
string itsName;
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 1; j++)
{
itsName = GetName(i,j);
if (itsName != "error")
{
if (pImage[k].LoadFile(itsName))
{
}
else
{
return false;
}
}
++k;
}
}
return true;
}
string PlanetaryGeneration::GetName(signed short int itsX, signed short int itsY)
{
if (itsX > 1 || itsX < -1 || itsY > 1 || itsY < -1)
{
cout << " Input method GetName() must be in range -1 to 1!" << endl;
}
else
{
signed short int resultX = *pX + itsX;
signed short int resultY = *pY + itsY;
stringstream streamX;
stringstream streamY;
streamX << resultX;
streamY << resultY;
if (resultX < 0 || resultY < 0)
{}
else
{
string wholeName = *pName + streamX.str() + "_" + streamY.str() + ".raw";
return wholeName;
}
}
return "error";
}
void PlanetaryGeneration::SetCoordinate (signed short int itsX, signed short int itsY)
{
*pX = itsX;
*pY = itsY;
}
void PlanetaryGeneration::SetName ()
{
cout << "Write name of file." << endl;
cin >> *pName;
//cout << endl << *pName << endl;
}
//class Planet;
Image::Image ()
{
pHeight = new unsigned short int;
pWidth = new unsigned short int;
*pHeight = 0;
*pWidth = 0;
pPoint = 0;
}
void Image::CreatePoints (unsigned short x, unsigned short int y)
{
if (x >= 256)
{
if (x <= 4096)
{
*pHeight = x;
}
else
{
*pHeight = 4096;
}
}
else
{
*pHeight = 256;
}
if (y >= 256)
{
if (y <= 4096)
{
*pWidth = y;
}
else
{
*pWidth = 4096;
}
}
else
{
*pWidth = 256;
}
pPoint = new unsigned short int[*pHeight * *pWidth];
ConstructPoint ();
}
Image::~Image ()
{
delete pHeight;
delete pWidth;
delete [] pPoint;
}
bool Image::LoadFile (string nameFile)
{
cout << endl <<"Begin Load File " << "\"" << nameFile << "\"" << "." << endl;
unsigned long int *la = new unsigned long int;
unsigned long int *lb = new unsigned long int;
unsigned long int numberPoint;
unsigned short int number;
*lb = 0;
ifstream inImageFile(nameFile,ios::binary);
if(!inImageFile)
{
cout << endl <<"Unable to open." << endl;
return false;
}
for (unsigned short int i = 0; i < *pHeight; i++)
{
for (unsigned short int j = 0; j < *pWidth; j++)
{
numberPoint = *pHeight*j+ *pWidth;
inImageFile.read((char*) &number,sizeof number);
pPoint[numberPoint] = number;
*la = 100*i/ *pHeight;
if (*la != *lb)
{
cout << "Load File: "<< *la << " %"<< " " << number << endl;
*lb = *la;
}
}
}
inImageFile.close();
cout << endl << "Complete Load File: "<< 100 << " %"<< endl;
return true;
}
bool Image::SaveFile (string nameFile)
{
cout << endl <<"Begin Save File " << "\"" << nameFile << "\"" << "." << endl;
unsigned long int *la = new unsigned long int;
unsigned long int *lb = new unsigned long int;
unsigned long int numberPoint;
unsigned short int number;
*lb = 0;
ofstream outImageFile(nameFile,ios::binary);
if(!outImageFile)
{
cout << endl <<"Unable to open." << endl;
return false;
}
for (unsigned short int i = 0; i < *pHeight; i++)
{
for (unsigned short int j = 0; j < *pWidth; j++)
{
numberPoint = *pHeight*j+ *pWidth;
number = pPoint[numberPoint];
outImageFile.write((char*) &number,sizeof number);
*la = 100*i/ *pHeight;
if (*la != *lb)
{
cout << "Save File: "<< *la << " %"<< endl;
*lb = *la;
}
}
}
outImageFile.close();
cout << endl << "Complete Save File: "<< 100 << " %"<< endl;
return true;
}
void Image::ConstructPoint ()
{
unsigned long int *la = new unsigned long int;
unsigned long int *lb = new unsigned long int;
*lb = 0;
unsigned long int numberPoint;
cout << "Create new image." << endl << endl;
for (unsigned short int i = 0; i < *pHeight; i++)
{
for (unsigned short int j = 0; j < *pWidth; j++)
{
numberPoint = *pHeight*j+ *pWidth;
pPoint[numberPoint] = i;
*la = 100*i/ *pHeight;
if (*la != *lb)
{
cout << "Create: "<< *la << " %"<< " " << pPoint[numberPoint] <<endl;
*lb = *la;
}
}
}
delete la;
delete lb;
cout << "Complete: "<< 100 << " %"<< endl;
}