Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Reycan

Pages: [1]
1
Fenêtrage / Fenêtre fixée au bureau
« le: Janvier 08, 2014, 10:23:30 pm »
Bonjour,

J'ai créer une fenêtre de 1920*1080 (la taille de la résolution de mon écran) et évidemment elle déborde à cause du menu démarrer , titleBar , etc.
Quand je l'a resize, elle se fixe correctemment sur mon bureau et je vois que la taille de ma fenêtre est de 1920*1018.

Je retente ma chance avec une fenêtre de 1920*1018. Elle n'est pas fixée au bureau, elle est positionnée avec un certain offset par rapport au coin sup-gauche. Je peux évidemment l'agrandir pour cette fois avoir la même taille mais fixée au bureau.

J'ai même essayé de placer avec setPosition ma fenêtre en 0,0 mais j'ai l'impression que je dois carrémment faire un setPosition dans les négatifs.

Enfin bref, j'aimerai savoir si c'était possible d'arriver dans cet état automatiquement en ouvrant ma fenêtre.
Je cherche mais je sais pas s'il y a un terme technique qui décrit qu'une fenêtre est fixée au bureau Windows.

2
Graphique / [Résolu] Bug contour mapping
« le: Octobre 01, 2013, 11:09:28 am »
Bonjour,

J'ai un petit soucis avec mes textures. Quand je les collent les unes à côté des autres, il y a un bord gris qui s'affiche, ce qui donne un quadrillage non souhaité.

Voici mon tile de test :


Voici le résultat obtenu :


J'ai fait un peu de recherche, et j'ai cru comprendre que OpenGL faisait une sorte de filtering sur les bords. Certains ont résolu un problème similaire en utilisant setSmooth(false), malheureusement cela n'a aucun effet chez moi.

3
Général / [Résolu] Canvas QT
« le: Septembre 18, 2013, 08:46:37 pm »
Bonjour,
J'essaye de créer un Widget SFML dans ma fenetre QT.
J'utilise SFML 2.1 et Qt 5.0.2, le tout sous Qt Creator.

J'ai suivi le tuto pour faire le canvas mais j'ai un petit problème.
Dans le constructeur QSFMLCanvas j'utilise le méthode create(winId()); afin de créer la
fenêtre SFML avec l'indentificateur du widget mais j'ai l'impression qu'il y a un petit problème
d'héritage multiple.
Voici l'erreur :
E:\IvaEditor\IvaEditor\qsfmlcanvas.cpp:40: erreur : reference to 'create' is ambiguous

E:\SFML-master\SFML-master\include\SFML\Window\Window.hpp:141: erreur : candidates are: void sf::Window::create(sf::WindowHandle, const sf::ContextSettings&)

E:\SFML-master\SFML-master\include\SFML\Window\Window.hpp:128: error:                 void sf::Window::create(sf::VideoMode, const sf::String&, sf::Uint32, const sf::ContextSettings&)

E:\Qt\Qt5.0.2\5.0.2\mingw47_32\include\QtWidgets\qwidget.h:661: error:                 void QWidget::create(WId, bool, bool)

Comment je peux faire pour contourner ce problème ?

4
Graphique / [Resolu] Problème de rotation, OpenGL
« le: Septembre 07, 2013, 08:52:21 am »
Bonjour,

J'ai un problème avec mes rotations. Elles ne s'effectuent que sur un demi-cercle. J'ai implémenté une classe Transform3D et en pensant que l'erreur venaient de là, je l'ai désactivée pour tester mes rotations directement avec les fonctions glRotated d'OpenGL. Mais le soucis persiste.

Voici ma configuration OpenGL qui est assez minimal :

void GLContext::resetGLStates() const
{
    glMatrixMode(GL_PROJECTION);    // La matrice courante devient la matrice de projection
    glLoadIdentity();               // initialise la matrice courante

    //glLoadMatrixf(mView3D.getTransform3D().getMatrix());
    glOrtho(0,1024,768,0,0,500);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

}
 

Ensuite ma fonction draw :

void SkeletonMD5::draw(sf::RenderTarget& target, RenderGLStates states3D) const
{
    if(m_modelMD5)
    {
        //glLoadMatrixf(states3D.transform3D.getMatrix());

        // Test avec les glTransfo
        glLoadIdentity();

        glTranslated(500,500,0);

        glRotated(135,0,1,0);

        glRotated(90,1,0,0);
        //**********************

        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, m_texture->getTextureID());

        glEnableClientState (GL_VERTEX_ARRAY); // activer le tableau pour la position des sommets
        glEnableClientState (GL_TEXTURE_COORD_ARRAY); // activer le tableau pour les coordonnées de texture des sommets
        glEnableClientState (GL_NORMAL_ARRAY); // activer le tableau des normales

        vector<mesh> meshes = m_modelMD5->getMeshes();
        Skeleton skeleton = m_modelMD5->getSkeleton();

        // Dessiner le modèle
        for (int i = 0; i < m_modelMD5->getNumMeshes(); ++i)
        {
            prepareMesh(i,meshes,skeleton); // calculer la position des sommets à partir des vertex weights

            glVertexPointer (3, GL_FLOAT, 0, &meshes[i].vertexArray[0]);

            glTexCoordPointer(2, GL_FLOAT, 0, &meshes[i].textureArray[0]);

            glNormalPointer(GL_FLOAT, 0, &meshes[i].normaleArray[0]);

            glDrawElements (GL_TRIANGLES, meshes[i].numTris * 3,
                            GL_UNSIGNED_INT, &meshes[i].vertexIndices[0]);
        }

        glDisableClientState (GL_VERTEX_ARRAY);
        glDisableClientState (GL_TEXTURE_COORD_ARRAY);
        glDisableClientState (GL_NORMAL_ARRAY);
    }
}
 

Resultat de l'affichage en modifiant les paramètres de la rotation sur l'axe Y :

glRotated(45,0,1,0) :



glRotated(90,0,1,0) :



glRotated (135,0,1,0) : ( le personnage ne tourne jamais le dos  :'( )



J'ai déjà utilisé mon loader MD5 et j'utilise cette même boucle for pour dessiner mes modèles dans un très ancien projet et je sais que j'ai déjà sû les faire tourner correctement. Enfin, ça m'énerve, je vois pas du tout ce qui cloche. Si quelqu'un aurait une idée ?

5
Graphique / [Resolu] Scene Graph 3D
« le: Août 19, 2013, 03:55:05 pm »
Bonjour, j'essaye de me lancer dans la 3D.
Il y a quelques temps, j'avais fait un petit "moteur" graphique en fesant le rendu en utilisant un Scene Graph.
Ici, j'essaye de faire +- la même chose en 3D et j'aimerai avoir un système me permettant d'appliquer les
transformations des Node parent aux enfants. En gros pouvoir faire un truc de style en SFML :
states.transform *= getTransform();

Je me suis aidé du code source de sf::Transform et sf::Transformable. En ce qui concerne les transformations en elle-même je crois avoir réussi et bien intégré les calculs de matrice.

Par contre pour la méthode const Transform& sf::Transformable::getTransform()const :
const Transform& Transformable::getTransform() const
{
    // Recompute the combined transform if needed
    if (m_transformNeedUpdate)
    {
        float angle  = -m_rotation * 3.141592654f / 180.f;
        float cosine = static_cast<float>(std::cos(angle));
        float sine   = static_cast<float>(std::sin(angle));
        float sxc    = m_scale.x * cosine;
        float syc    = m_scale.y * cosine;
        float sxs    = m_scale.x * sine;
        float sys    = m_scale.y * sine;
        float tx     = -m_origin.x * sxc - m_origin.y * sys + m_position.x;
        float ty     =  m_origin.x * sxs - m_origin.y * syc + m_position.y;

        m_transform = Transform( sxc, sys, tx,
                                -sxs, syc, ty,
                                 0.f, 0.f, 1.f);
        m_transformNeedUpdate = false;
    }

    return m_transform;
}
 
Je dois dire que je m'y perd. J'aimerai avoir quelques explications et si possible également un lien où cette méthode (si elle a un nom et qu'elle ne soit pas une simple méthode pondue de ton esprit) est expliquée mathématiquement.

6
Bonjour,
Mon problème est assez similaire à cette situation : http://en.sfml-dev.org/forums/index.php?topic=505.0

Je reprends un message de Laurent :
"I don't think that a socket can perform multiple tasks in parallel. Things have to be done sequentially. That's why I wonder why people want to use the same socket in multiple threads, I can't find a situation where this can be useful."

Et voici mon cas concret :
Je réalise un tactical-rpg multijoueur et pour le moment j'utilise un seul socket pour chaque client.
Mais je crois qu'il est possible dans ma situation que ce socket soit utilisé par le client et le serveur en même temps.
1) Le serveur envoi une réponse suite à un calcul réalisé sur une action demandée par l'utilisateur.
2) Le client envoi un message via le chat.

Il y a bien une suite logique entre les différentes actions d'un joueur et il attendra toujours la réponse avant de pouvoir effectuer la prochaine action, mais par contre il peut envoyé un message par le chat quand il veut.

Dois-je gérer la communication client-serveur pour le chat dans un socket réservé sur un autre port à cette tâche dans ce cas-ci ?
Que se passe-t-il quand le socket est utilisé en même temps des deux côtés (client-serveur) ?

Edit :
Le problème peut arriver également quand une action d'un autre joueur nécessite que le serveur envoi la réponse à tous les participants.

J'en profite pour poser une deuxième question. J'aimerais réaliser un top départ entre plusieurs participants, un peu comme dans un jeu de course.
Pour le moment j’exécute une boucle sur ma liste de participants et je leur envoi le top. A quelle vitesse l'envoi est effectué ? Est-il nécessaire de créer un thread par participant pour envoyer le top ?

Pages: [1]
anything