我希望能够从VisualC++ 2010编译OpenGL4.1(C/C++)应用程序.
在搜索之后我才发现:http: //www.opengl.org/sdk/ 和文档:(很好) http://www.opengl.org/sdk/docs/man4/
这有点令人困惑,我真的不知道要安装什么来开始.我甚至找不到下载链接,或者我应该使用的OpenGL项目.
我有一个程序加载原始数据以供图表并将其存储在一个名为的类中cRawGraph.它然后格式化这些数据并将其存储在另一个名为的类中cFormatGraph.有没有办法复制存储在cRwGraph日期对象中的一些日期对象cFormattedGraph而不使用引用?我查看了Oracle的文档,并没有看到一个构造函数会接受日期对象或任何方法数据会实现这一点.
代码段:
do{
d=rawData.mDate[i].getDay();
da=rawData.mDate[i];
datept=i;
do{
vol+=rawData.mVol[i];
pt+=rawData.mPt[i];
c++;
i++;
if (i>=rawData.getSize())
break;
} while(d==rawData.mDate[i].getDay());
// this IS NOT WORKING BECOUSE IT IS A REFRENCE AND RawData gets loaded with new dates,
// Thus chnaging the value in mDate
mDate[ii]=da;
mVol[ii]=vol;
mPt[ii]=pt/c;
if (first)
{
smallest=biggest=pt/c;
first=false;
}
else
{
double temp=pt/c;
if (temp<smallest)
smallest=temp;
if (temp>biggest)
biggest=temp;
}
ii++;
} while(i<rawData.getSize());
Run Code Online (Sandbox Code Playgroud) 我的顶点数组指向正确时遇到问题:
Run Code Online (Sandbox Code Playgroud)const float vertices[] = { /* position */ 0.75f, 0.75f, 0.0f, 1.0f, /* color */ 1.0f, 0.0f, 0.0f, 1.0f, /* position */ 0.75f, -0.75f, 0.0f, 1.0f, /* color */ 0.0f, 1.0f, 0.0f, 1.0f, /* position */ -0.75f, -0.75f, 0.0f, 1.0f, /* color */ 0.0f, 0.0f, 1.0f, 1.0f, }; ... glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, (void*)16); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableVertexAttribArray(0); glDisableVertexAttribArray(1);
我不明白步幅和偏移是如何工作的.glVertexAttribPointer()在我的情况下使用的正确方法是什么?
最近我开始学习OpenGL和; 反过来,开始阅读使用OpenGL 4.3的OpenGL SuperBible第6版.
我的问题出现在sb6.h头文件中,因为在本书中写道,这是一个c ++头文件,它定义了一个名为sb6的命名空间,它包含了一个应用程序类的声明.
当我尝试编译我的程序时,我的C++ IDE(Visual Studio 2010)会抛出一个错误,指出无法找到这样的头文件.
所以也许你们其中一个人听说过这个问题,或者也开始阅读这本书并知道如何解决这个问题; 如果是的话请回复.
#include "sb6.h"
//derive my_application from sb6:application
class my_application : public sb6.application
{
public :
//Rendering function
void render(double currentTime){
//Simply clear the window red
static const GLfloat red[] = {1.0f , 0.0f , 0.0f , 1.0f};
glClearBufferfv(GL_COLOR, 0 , red) ;
}
Run Code Online (Sandbox Code Playgroud) 执行:
#define HIGH32(V64) ((uint32_t)((V64 >> 32)&0xffFFffFF))
#define LOW32(V64) ((uint32_t)(V64&0xffFFffFF))
uint32_t a = 0xffFFffFF;
uint32_t b = 0xffFFffFF;
uint64_t res = a * b;
printf("res = %08X %08X\n", HIGH32(res), LOW32(res));
Run Code Online (Sandbox Code Playgroud)
得到:
"res = 00000000 00000001"
Run Code Online (Sandbox Code Playgroud)
但我期待:fffffffe00000001.我做错了什么?单一作业:
res = 0x0123456789ABCDEF;
printf("res = %08X %08X\n", HIGH32(res), LOW32(res));
Run Code Online (Sandbox Code Playgroud)
给
res = 01234567 89ABCDEF
Run Code Online (Sandbox Code Playgroud)
环境:
$gcc --version
gcc (GCC) 4.8.3
Copyright (C) 2013 Free Software Foundation, Inc.
$ gcc -v
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-cygwin/4.8.3/lto-wrapper.exe
dest arch: i686-pc-cygwin
$ file a.exe
a.exe: PE32 executable (console) Intel 80386, for …Run Code Online (Sandbox Code Playgroud) 我的老师给了我这个代码,它返回31,40,但我无法弄清楚原因.它返回它的原因是什么原因?
void main() {
int *ptr;
int arr[5] = { 10, 20, 30, 40, 50 };
ptr = &arr[3];
cout << ++*ptr-- << ", " << *ptr;
}
Run Code Online (Sandbox Code Playgroud) 如果我有一个双核CPU,它是否意味着它可以运行最多2个线程?
然后; 如果是这样,当它们看起来受到CPU的限制时,如何运行4个并发线程到2个?(因为双核PC最多只能运行2次).
如标题所示,在Qt内部,我无法使用或调用QGLWidget函数之外的任何OpenGL函数,例如initializeGL()和paintGL()。
在QMainWindow调用班级的某个插槽后,我试图构建3D模型。一切似乎都可以正常工作,所有顶点都已加载,但是,当我尝试绘制模型时,出现了NULL引用异常。当提供的顶点太少时,通常会发生这种情况。
当我在中使用它时,相同的构建函数也可以工作initializeGL()。
我试过long long成功扫描整数; 但是,我不知道如何扫描更大的整数long long.如何将一个扫描整数更大的比long long在C?例如,long long long.
我是一个Java初学者,并且想知道如何使用字符串命名类的实例,然后依次创建case:使用该字符串/对象,同时保持完全自动化(System.in.read()例如使用)?