Vladimir128

Members
  • Content count

    9
  • Joined

  • Last visited

Community Reputation

229 Neutral

About Vladimir128

  • Rank
    Newbie
  1. OpenGL Problems with vsync on Linux

    Thanks for reply I listened to your advices, and these few days we were testing different applications with friends, who have Linux. VSync works fine, looks like it was a problem of Virtual Machine. But there's another problem with extensions. There are a lot of similar code, so I'll show you just a pseudocode, with a few lines, how it is structured in files. Something like this   File GLXExtensions.h   class GLXExtensions { public:     GLXExtensions(void);     ... private:     bool Initialize(void);     ... };   File GLXExtensions.cpp   #include "GLXExtensions.h"   static PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = NULL;   GLXExtensions::GLXExtensions(void) {     Initialize(); } ... bool GLXExtensions::Initialize(void) {     glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glXGetProcAddress(reinterpret_cast<const GLubyte*>("glXSwapIntervalSGI"));       // CASE 1       return true; }   File GLExtensions.h   extern PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;   File GLRenderDevice.h   #include GLExtensions.h   class GLRenderDevice { ...     bool initialize(void); ...     GLXExtensions *glxExt; }   File GLRenderDevice.cpp   #include "GLRenderDevice.h"   GLRenderDevice::initialize(void) {     glxExt = new GLXExtensions();       // CASE 2 }   The problem is - if I call glXSwapIntervalSGI in the "CASE 1" line, everything is fine, but if I call it in "CASE 2" line, program crashes. Even if pointer is not null. And also, if pointer is declared without "static" attribute, just as "PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = NULL;", than program crashes even in "CASE 1". The same thing with other extensions, for example with VBO. So the question - how these pointers should be initialized properly? By the way - everything works fine on Virtual Machine, it crashes only on real Linux. Also the same code with wglGetProcAddress works on Windows, even without "static". Does anyone have suggestions?
  2. It's difficult to recommend you NeHe tutorials, because they don't use shaders, except one lesson So, don't worry about that GLUT is the library for studying OpenGL, and as far as I know, it is not recommeded to use in serious applications. FreeGLUT is probably also a little bit deprecated. GLU is the library with some functions that can be written with just standart GL. So, it's helpful when you study OpenGL, but not necessarily too. To create window and initialize OpenGL you probably should use GLFW or API methods of your OS, if you prefer low-level programming SDL is also a popular library
  3. Hi everyone. I've got some troubles with OpenGL on Linux in my graphical application. Actually, I cannot turn vsync on. glXSwapInterval returns GLX_BAD_CONTEXT. So I took the code for Linux from NeHe tutorial, as a simple example, but the situation is the same. I tried to call the function after glXMakeCurrent and before, but anyway it returns an error. Probably, there's no need to show you the code, because it is available on the NeHe website, and you can try it yourself. Has anyone got some suggestions, what can be the reason and how to fix it? P.S. There are few functions glXSwapInterval, for example glXSwapIntervalSGI. I run Linux on the virtual machine with a simple videocard, so the function available there is glXSwapIntervalMESA. Maybe this is the reason ) And other functions would work on the real PC. But I'm not sure
  4. What happened to Rastertek?

    First - strange lines: #include <DirectXMath.h> using namespace DirectX;   OK, I replaced it with: #include <xnamath.h>   Second - D3DCompileFromFile not found. MSDN says it's from d3dcompiler.h file, but there's no such function Of course, as a last resort, shaders can be loaded manually and compiled with D3DCompile :)
  5. What happened to Rastertek?

    Has anyone got executable files, which were available with tutorials?
  6. Calculation of VB each draw is probably not really neccessary. Because you can add something like "dirty" flag, and calculate buffer only if text was changed
  7. DX11 DX11 Fullscreen.

    Yes, try to do that, and when you get the message, check if your application was activated and call the method IDXGISwapChain::SetFullscreenState with parameter Fullscreen set to TRUE. That should work :)
  8. It looks like in this case you won't be able to check different multisample quality levels, because the method ID3D11Device::CheckMultisampleQualityLevels should be used with already created Device, but before creating SwapChain
  9. Using two shaders at the same time

    Try to mix shaders in HLSL code again, and to make it work. Because, even if you will successfully apply two shaders to one object, all pixels of this object will be processed twice. That's not very good for performance, especially when there are a lot of objects