我想得到窗口的当前鼠标位置,并将其分配给2个变量x和y(相对于窗口的坐标,而不是整个屏幕).
我正在使用Win32和C++.
还有一个快速的奖励问题:你将如何隐藏光标/取消隐藏?
在win32中设置窗口的最佳方法是将OpenGl(以及需要额外代码的glsl)集成到其中吗?
我已经做了一些研究,并找到了许多方法来完成这项任务我想知道最好的方法是什么,或者你最喜欢的方式,如果最好的方法没有答案.
我看过nehe的设计,也是OpenGl超级圣经提供的设计,它们都有完全不同的方式来完成它(还有超级圣经给我一些错误:().
任何帮助将不胜感激,包括教程等.
谢谢
我试图使一个函数接收枚举作为其参数之一.我把枚举作为一个全局但由于某种原因我的其他文件无法改变枚举.所以我想知道如何将枚举设置为函数的参数,如
function(enum AnEnum eee);
Run Code Online (Sandbox Code Playgroud)
还是有更好的方法来解决上述问题?
好的,快速改写我的问题:我基本上有很多文件,我希望他们所有人都可以访问我的枚举,并能够更改该枚举的状态,而且应该能够访问它的大多数文件都在类.我试图解决这个问题的方法是将枚举传递给需要访问它的函数,我无法弄清楚如何使函数接收枚举作为其参数之一.
我一直试图使用gluLookAt,但我遇到了一些问题...我的第一个是相机的默认位置,每当我尝试使用它时,我的整个场景似乎都是侧向和向上旋转....我的第二个问题是....从我所看到的是gluLookAt(Posx,Posy,PosZ,yaw,pitch,roll,然后是三个向量)
但是偏航俯仰和滚动的顺序是什么?
解决
了摄像机的默认位置是在gluLookAt(0,0,0,0,0,-1,0,1,0); 谢谢Drew的所有帮助:D
我一直在尝试让Glew和opengl 3.2在win32上下文中使用代码块(minGW).我在这里找到了一个不错的小教程
正如我一直试图解决的问题,如果在代码块中编译glew实际上是可行的,我想在完成教程之前尝试使用源代码来查看它是否可行.
在略微调整代码后,我尝试编译并得到了一些我以前从未见过的错误.他们如下
|In function 'bool createWindow(LPCWSTR, int, int)':|
|73|error: cannot convert 'LPCWSTR {aka const wchar_t*}' to 'LPCSTR {aka const char*}' in assignment|
|80|error: cannot convert 'LPCWSTR {aka const wchar_t*}' to 'LPCSTR {aka const char*}' for argument '2' to 'HWND__* CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID)'|
|In function 'int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)':|
|105|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
|110|error: '_TRUNCATE' was not declared in this scope|
|110|error: …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚为什么以下代码不起作用,我试图绘制2个形状,一个红色的三角形和一个多色的立方体,他们自己画得很完美,但如果我试图同时绘制它们给出了奇怪的错误,我尝试改变变量修改我的着色器的线条,我似乎无法接近我想要的结果,当前的代码最终绘制了2个使用立方体颜色的相同三角形.
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
GLuint MatrixID = glGetUniformLocation(shader->id(), "MVP");
glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f);
glm::mat4 View = glm::lookAt(
glm::vec3(4,2,2), // Camera location
glm::vec3(0,0,0), // and looks at the origin
glm::vec3(0,1,0) // Head is up (set to 0,-1,0 to look upside-down)
);
glm::mat4 myMatrix = glm::translate(-2.f,0.f,0.f);
glm::mat4 Model = glm::mat4(1.f);
Model= myMatrix * Model;
glm::mat4 MVP = Projection * View * Model;
glm::mat4 myMatrix2 = glm::translate(2.f,0.f,0.f);
glm::mat4 Model2 = glm::mat4(1.f);
Model2= myMatrix2 * Model2;
glm::mat4 …Run Code Online (Sandbox Code Playgroud) 我不想创建一个代码墙,所以如果你需要任何代码只是问我将发布.我收到多个定义错误,我不明白为什么.我相信错误正在发生,因为我试图在一个头文件中声明一个变量(以及在同一个头文件中为它创建一个对象),然后在4个不同的文件中使用它.对于每个文件,我使用头文件我得到了多个定义,我提供了少量的信息,为什么会发生这种情况?
请询问是否需要更多信息才能解决问题.
我在Windows 7上使用Code :: Blocks ide mingW编译器和编程
编辑
感谢大家的快速帮助,解决了我的问题:D
我一直试图为我的游戏创建一个计时器,我听说过QueryPerformanceCounter和QueryPerformanceFrequency.有人可以解释一下这些可以用来计算游戏循环中的时间/ fps /滴答吗?