我正在 OpenGL 中创建一个 3D 应用程序,为了在我正在阅读的模型上显示纹理,我正在使用 GLuint。但是,我收到了 Visual Studio 错误 C4430 缺少类型,以及一些与该问题相关的其他错误。
包含 glut 文件并且在放入之前运行良好。是 GLuint 过时了,还是其他什么?
编辑:已更改的代码是:
对象构造器之前
Object::Object(string shapeFileName, string texFileName){
readFile(shapeFileName);
loadTexture(texFileName);
}
Run Code Online (Sandbox Code Playgroud)
之后的对象构造函数
Object::Object(string shapeFileName, string texFileName){
readFile(shapeFileName);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
loadTexture(texFileName);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 1024, 512, GL_RGB, GL_UNSIGNED_BYTE, image_array);
free(image_array);
glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, image_array);
}
Run Code Online (Sandbox Code Playgroud)
连同GLuint texture;在头文件中添加的行一起,这是抛出错误的唯一位。
我有一个对象数组std::thread,它们的操作顺序以及它们重新加入主线程的顺序并不重要。我尝试过使用
for(int i = 0; i < noThreads; ++i)
{
if(threads[i].joinable())
threads[i].join();
}
Run Code Online (Sandbox Code Playgroud)
但这似乎使它们“按顺序”运行,当然,这可能是因为我从线程的控制台输出按照我分派它们的顺序发生这一事实中得出了这个结论(就像所有线程 #1 的输出,然后是线程 #2 的所有输出)。我也尝试过threads[i].detach(),但我不知道每个线程的执行时间,所以我无法暂停程序直到它们完成。
每个线程所做的工作是:
int spawn(const char* cmd)
{
FILE *fp = popen(cmd, "r");
char buff[512];
if(vFlag == 1)
{
while(fgets(buff, sizeof(buff), fp)!= NULL)
{
printf("%s", buff);
}
}
int w = pclose(fp);
if(WIFEXITED(w))
return WEXITSTATUS(w);
else
return -1;
}
Run Code Online (Sandbox Code Playgroud)
其中正在执行的命令是"./otherApp.elf". 请记住,当前将其打印到控制台的事实将更改为输出到各种文件,我如何调度线程以便使它们执行然后重新加入无序?
我在将包含无效点和有效点的给定二维矩阵转换为只有有效节点的图形时遇到问题。问题是这样的。我有一个二维矩阵
# # # # #
# . C C #
# S # # #
# . . E #
# # # # #
Run Code Online (Sandbox Code Playgroud)
我想找到从 S 到 E 的最短距离,记住我必须覆盖所有的 'C' 和 '#' 作为一堵墙和 '.' 充当自由路径。现在我想将此矩阵转换为仅包含有效节点的图形。请帮帮我。
n = number of nodes
for i=1 to n: for j=1 to n: d[i][j]=INF
for k=1 to n:
for i=1 to n:
for j=1 to n:
d[i][j] = min(d[i][j], d[i][k] + d[k][j])
shortest = INF
for each permutation a[1],a[2],...a[k] of the 'mustpass' nodes: …Run Code Online (Sandbox Code Playgroud) 我正在写一个模板化的类,它涉及使用迭代器.我已经找到了很多关于你如何使用模板来键入迭代器的问题,所以我想知道它为什么还没有用.
#pragma once
#include <iterator>
#include <list>
#include <tuple>
template <class T>
class Quack
{
private:
std::list<T> data;
typename std::list<T>::iterator iter;
public:
Quack();
void insert(T dat);
std::tuple<T, T> poppop();
private:
//error: 'iter' does not name a type
iter binarySearch(T toFind, std::list<T>::iterator min, std::list<T>::iterator max);
};
Run Code Online (Sandbox Code Playgroud)
我也试过typedef typename std::list<T>::iterator iter;,但是引发错误"std :: list :: iterator不是一个类型"
所以鉴于我正在使用typename,我做错了什么?
我正在使用带有参数-std = c ++ 0x的g ++ 4.4.5,如果它是相关的.
我想在c ++和openGL中模拟太阳系,我想知道是否有一种便宜的方法可以返回一个x,y,z向量,我可以用它来更新每个行星的位置帧.